Переключение обратно на первичный удаленный посредник после успешного переключения при сбое - PullRequest
4 голосов
/ 11 января 2012

Мы используем 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 был активным одновременно.

Пожалуйста, дайте мне знать, возможно ли это и как.

1 Ответ

4 голосов
/ 15 февраля 2012

Вам необходимо установить в true параметр «priorityBackup».Ваш URI станет:

static:(failover://(tcp://server1:61617,tcp://server2:61617)?randomize=false&priorityBackup=true)

Это сделает приоритетным резервное копирование server1 (первый в списке серверов).Когда сервер1 выходит из строя, он переключается на сервер2, но постоянно пытается повторно подключиться к серверу1.Следовательно, когда он снова включится, он переключится обратно на сервер1.Эта опция доступна только в версии 5.6

Полная информация здесь: http://activemq.apache.org/failover-transport-reference.html

Здесь также есть интересный блог: http://bsnyderblog.blogspot.com/2010/10/new-features-in-activemq-54-automatic.html

...