У меня есть небольшая проблема с моим образцом макета JMS.
У меня есть два брокера (A, B) на двух машинах, которые связаны через сетевой разъем. Идея заключается в том, что производитель может отправить любому брокеру, а потребитель может прослушать любого брокера, и тема для отправки / получения доступна по всему миру.
В теме есть два постоянных клиентских клиента (по одному на каждой машине), которые оба будут обрабатывать все сообщения в теме. Я хочу, чтобы это была долговременная подписка, чтобы процессы не теряли рабочую нагрузку, если процесс необходимо перезапустить. Оба клиента-подписчика настроены на использование URL-адреса отказоустойчивого посредника, поэтому они сначала пытаются подключиться к своему локальному посреднику и, если он недоступен другому. Отказ клиента, похоже, работает, но я обнаружил проблему в следующей ситуации:
К каждому посреднику «А» и «В» подключен клиентский клиент. Производитель отправляет «А». Брокер 'B' перезапускается. Клиент 'B' регистрирует потерю соединения и переключается в 'A'. Снова появляется «B», и поскольку он сам зарегистрирован в качестве постоянного абонента на «A», он получает фид сообщений. Сейчас у него нет активного долгосрочного абонента (теперь у «А» их три, включая «В»), и он накапливается до тех пор, пока не достигнет пределов своего соединения.
Моя конфигурация неверна? Возможно ли то, что я намеревался?
Cheers,
Кай