Может ли у вас быть резервный подписчик на ActiveMQ?

У меня есть мастер / ведомый брокер AMQ для обмена сообщениями JMS. У меня есть два сервера, которые я хотел бы установить в качестве основных / подчиненных пользователей, использующих Apache Camel. Мы добились этого благодаря тому, что оба сервера пытаются соединиться с одним и тем же идентификатором клиента. Один узел обрабатывает всю работу, но если он выходит из строя, другой узел подключается и снова начинает работу. Это работало нормально, когда у вас был один потребитель, но шумиха в файлах журнала отключенного сервера с сообщением

 ERROR org.apache.camel.component.jms.DefaultJmsMessageListenerContainer] 
(Camel (spring-context) thread #0 - JmsConsumer[global.topic.event]) Could 
not refresh JMS Connection for destination 'global.topic.event' - retrying 
using FixedBackOff{interval=5000, currentAttempts=12, 
maxAttempts=unlimited}. Cause: Broker: broker - Client: client already 
connected from tcp://xxx.xx.xx.xxx:xxxx

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

1 ответ

Преобразуйте использование тем на стороне потребителя в Виртуальные темы. Виртуальные темы позволяют вам продолжать создавать и использовать существующие потоки сообщений из этой темы, а также заставлять потребителей слушать специально именованные очереди.

После того, как вы потребляете данные из очереди, вы можете реализовать все шаблоны потребителей - эксклюзивный потребитель (который допускает горячее резервное копирование потребителя), группы сообщений, параллельные потребители и т. Д.

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