Почему Connection.Start() зависает при отказоустойчивом протоколе, даже если transport.startupMaxReconnectAttempts=1

У меня есть служба Windows C#, у которой есть потребитель, подключенный к Apache NMS.ActiveMQ, и прослушивающий очередь сообщений. Я занимаюсь вопросами переподключения, когда AMQ умирает.

У меня проблема со сценарием, когда моя служба запускается во время ActiveMQ. URL выглядит так:

отказоустойчивая://(TCP: // локальный:61616)?transport.initialReconnectDelay=100&transport.startupMaxReconnectAttempts=1

Я ожидаю, что поведение будет следующим: если я запускаю свой сервис, когда ActiveMQ не работает, мой потребитель пытается подключиться к ActiveMQ один раз (я настроил его, чтобы попытаться подключиться только один раз, чтобы предотвратить блокирование соединения.Start()), если происходит сбой, он продолжает пытаться подключаться вечно каждые 10 секунд (используя таймер), пока ActiveMQ не станет доступным и соединение не будет установлено успешно.

Но фактическое поведение заключается в том, что после нескольких попыток (не более 5 раз) происходит зависание connection.Start () и служба не подключается к ActiveMQ, даже если она становится доступной (я печатал в журнале до и после connection.Start()).

transport.startupMaxReconnectAttempts=1 должен препятствовать зависанию Start () навсегда, но это не помогает в моем случае.

Примечание: если я удалю "transport.startupMaxReconnectAttempts = 1", то connection.Start () все равно зависнет, и это не позволит мне остановить службу.

Я пытался добавить transport.timeout=5000 на URL, но проблема по-прежнему возникает.

0 ответов

Другие вопросы по тегам