2013-06-21 3 views
5

В моем клиенте ActiveMQ, когда я указать, какой брокер, к которому следует подключиться, в чем разница между указаниемЧто отказоустойчивый транспорт делать с одним URI

tcp://host:port 

и

failover:(tcp://host:port) 

Я пробовал остановка и запуск брокера, и в обоих случаях клиент снова находит брокера при перезапуске. Я не экспериментировал с сообщениями в потоке (я использую очереди) или другими сетевыми сбоями, но вижу, есть ли разница.

Надеюсь, у кого-то есть окончательный ответ, поскольку документация, которую я нашел, немного расплывчата.

Благодаря

+0

В случае, если кому-то интересно, почему я спрашиваю, мой клиент получает повторяющиеся EOFExceptions, когда я использую URI отказоустойчивости. К сожалению, он делает это только в определенной среде, и я изо всех сил пытаюсь воспроизвести его или понять причину, поэтому вместо этого я пытаюсь понять последствия устранения отказа. EOFExceptions может быть вопросом будущего! –

ответ

2

протокол отказоустойчивости также позволяет вам предоставить некоторые полезные параметры подключения. Для экс:

failover:(tcp://host:port)?jms.useAsyncSend=true&timeout=5000 

Здесь timeout=5000 удостоверится выручать первоначальную попытку соединения через 5 сек, если брокер не доступен или не отвечает.

+0

Спасибо. Оба ответа верны, поэтому я выбрал тот, который оказался наиболее полезным. –

5

Если вы используете переход на другой ресурс, то клиентская библиотека перейти в петлю RECONNECT, когда вы теряете связь с сервером. Сбой сети будет скрыт от вашего приложения. Если вы не используете переход на другой ресурс, тогда, когда вы потеряете соединение, ваше приложение получит JMS-сообщение о том, что вы потеряли соединение.

+0

Спасибо. Это имеет большой смысл. –

1

Отказоустойчивость очень полезна для решения проблемы брокера или сбоя системы и обеспечивает долговечность.

отказоустойчивого: (TCP: // host1: порт TCP: // host2: порт TCP: // host3: порт) jms.useAsyncSend = истина & Randomize = ложь

Здесь? если вы сделаете randomize = true, тогда он будет использовать все 3 брокера одновременно, а randomize = false означает использование одного брокера одновременно, а когда бегущий брокер идет вниз, выберите любого брокера у спящих брокеров. И useAsyncSend = true будет запускать систему обмена сообщениями асинхронно, что быстро по сравнению с синхронным.

Смежные вопросы