Мы используем Apache ActiveMQ 5.5.
У нас есть брокер (назовем его Main Broker), работающий по tcp: //0.0.0.0: 61616. Этот брокер сохраняет и пересылает сообщение удаленному брокеру. Для этого у нас есть сетевое подключение от этого брокера к двум удаленным брокерам. Мы хотим, чтобы один из удаленных брокеров выполнял роль основного, а другой - аварийного переключения. Это URI сетевого подключения, которое мы используем
static:(failover://(tcp://<b>server1</b>:61617,tcp://<b>server2</b>:61617)?randomize=false)
Мы используем Spring DefaultMessageListenerContainer для прослушивания сообщений
failover://(tcp://<b>server1</b>:61617,tcp://<b>server2</b>:61617)?randomize=false
В обычном сценарии, когда все посредники запущены и работают, а сообщение отправлено главному посреднику, оно пересылается на сервер server1 и используется слушателем.
Если мы остановим посредника на сервере server1, аварийное переключение будет успешно выполнено, и сообщения будут перенаправлены на сервер server2 и успешно использованы слушателем. Проблема в том, что когда мы возвращаем server1 обратно, сообщения продолжают передаваться главным брокером на server2. Наше требование состоит в том, что после того, как сервер server1 запущен и работает, главный брокер должен начать пересылку сообщений на сервер server1, а слушатель должен подключиться обратно к server1 и получить сообщения. Мы не можем изменить randomize на true, потому что хотим, чтобы только один из серверов1 или сервер2 был активным одновременно.
Пожалуйста, дайте мне знать, возможно ли это и как.