Url-адрес подключения для отработки отказа ActiveMQ

У меня есть два вопроса для протокола отработки отказа ActiveMQ.

Вопрос 1: Когда я использую следующий url с вложенным он не подключается к ActiveMQ.

failover:(tcp://192.168.1.111:61616)?nested.jms.useAsyncSend=true&initialReconnectDelay=1000&maxReconnectAttempts=-1

Вопрос 2: следующий url работает хорошо. Он также повторно подключиться к ActiveMQ при первом перезапуске, но когда я выключение ActiveMQ во второй раз программа Java завершается, и нет никакого исключения.

failover:(tcp://192.168.1.111:61616)?jms.useAsyncSend=true&initialReconnectDelay=1000&maxReconnectAttempts=-1

Версия ActiveMQ: 5.10.0

Ссылка: http://activemq.apache.org/failover-transport-reference.html

1 ответ

  1. Вложенный префикс полезен только для параметров, которые применяются к внутренним транспортам TCP / SSL внутри URI отработки отказа или, возможно, к адресам брокера, которые обнаружены с помощью обнаружения многоадресной рассылки и т.д. Они не применяются к параметрам уровня подключения (начиная с ‘jms.’ например.) Ваш первый URI будет правильным, если установлено следующее:

    failover:(tcp://192.168.1.111:61616)?jms.useAsyncSend=true&initialReconnectDelay=1000
    

    Это потому, что jms.параметр useAsyncSend применяет все соединение, а не одно соединение с данным транспортом на основе tcp внутри URI отработки отказа.

    Вложенные опции были бы такими вещами, как soTimeout или tcpNoDelay и т. д.

    Вам не нужно пытаться установить попытки повторного соединения на бесконечность, потому что это было и по-прежнему является предположением по умолчанию, только когда вы хотите ограничить его некоторым фиксированным количеством попыток, вам нужно установить эту опцию.

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