Параметры аварийного переключения ActiveMQ не работают должным образом

Я хотел бы использовать аварийный транспорт ActiveMQ, как описано в https://activemq.apache.org/failover-transport-reference.html.

Параметры аварийного переключения «повторить навсегда» по умолчанию работают должным образом.

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

Например, при запуске я хотел бы немедленно завершить работу приложения, если соединение с брокером не может быть установлено с первой попытки.

Попробовал самый простой вариант:

failover:tcp://localhost:61616?startupMaxReconnectAttempts=0

но, к моему удивлению, повторная попытка продолжается вечно.

Я пробовал много других комбинаций параметров, например

failover:tcp://localhost:61616?startupMaxReconnectAttempts=0&maxReconnectDelay=10&maxReconnectAttempts=0&timeout=10

но без желаемого результата.

Что я делаю не так? Как настроить аварийный транспорт таким образом, чтобы он прекращал попытки повторного подключения при запуске, если посредник недоступен?

Я использую ActiveMQ версии 5.15.9 (https://hub.docker.com/r/rmohr/activemq) и библиотеку Apache.NMS.ActiveMQ версии 1.8.

Соответствующий фрагмент кода

var factory = new ConnectionFactory(connectionString);
var connection = factory.CreateConnection();
var session = connection.CreateSession(); // hangs here

person Benjamin Batistic    schedule 11.02.2021    source источник


Ответы (1)


Существует конкретная конфигурация URI Apache.NMS.ActiveMQ: https://activemq.apache.org/components/nms/providers/activemq/uri-configuration, что не соответствует https://activemq.apache.org/failover-transport-reference.html, что вносит много путаницы.

Следуя документации NMS, я придумал рабочее решение:

failover:(tcp://localhost:61616)?transport.startupMaxReconnectAttempts=1
  • составной URI должен быть заключен в круглые скобки: failover:(tcp://localhost:61616)?..., а не failover:tcp://localhost:61616?....
  • параметры транспорта должны иметь префикс transport.
  • опция transport.startupMaxReconnectAttempts=0 соответствует бесконечным повторным попыткам
person Benjamin Batistic    schedule 12.02.2021