У меня здесь небольшая проблема с моим образцом JMS.Сеть брокеров ActiveMQ с длительными темами подписки
У меня есть два брокера (A, B) на двух машинах, которые связаны через сетевой разъем. Идея заключается в том, что производитель может отправлять любому брокеру, и потребитель может слушать любого брокера, а тема для отправки/получения доступна во всем мире.
В этой теме есть два надежных клиента-подписчика (по одному на каждой машине), которые будут обрабатывать все сообщения в теме. Я хочу, чтобы это была долговременная подписка, чтобы процессы не потеряли никакой рабочей нагрузки, если процесс нужно перезапустить. Оба клиента подписчика настроены так, чтобы иметь URL-адрес броузера-брокера, поэтому сначала они пытаются подключиться к своему локальному хостеру и, если он недоступен другому. Отказоустойчивость клиентов, похоже, работает, но я нашел проблему в следующей ситуации:
Каждый брокер «A» и «B» подключен к абоненту. Производитель отправляет «A». Брокер «B» перезапускается. Клиент «B» регистрирует потерю соединения и переключает на «A». «B» снова появляется, и поскольку он сам зарегистрировался как долговечный подписчик на «А», он получает сообщение. У этого нет активного долговечного подписчика (теперь «А» имеет три, включая «В»), и накапливается до тех пор, пока не достигнет пределов своего соединения.
Является ли моя конфигурация неправильной? Возможно ли, что я намеревался?
Cheers, Kai
Это не мастер-раб, а сеть брокеров со статическим открытием (http://activemq.apache.org/networks-of-brokers.html). Спрос на инфраструктуру заключается в том, что у нас есть потребители и производители трафика в одной коробке. Если брокер терпит неудачу, продюсеры должны иметь возможность подключаться к другому брокеру в качестве исключения по сети (есть ли способ автоматически подключить их к оригиналу, если он вернется?), И потребители, конечно, должны сделать то же самое. Затем есть клиенты, которые должны подключиться к любому сетевому брокеру и получать сообщения темы от производителей от обоих брокеров. – Kai
, чтобы сделать изображение более четким, у нас есть два компьютера с каждым из производителей и потребителем, который также производит сообщения с меньшей скоростью и с меньшей нагрузкой для конечных клиентов на удаленных машинах. Если один из компьютеров выходит из строя, конечные клиенты должны легко переключаться на другого брокера и по-прежнему иметь большую часть функциональности. – Kai