成功进行故障转移后切换回主远程代理

时间:2012-01-11 00:26:19

标签: apache activemq

我们正在使用Apache ActiveMQ 5.5。 我们有一个在tcp://0.0.0.0:61616运行的代理(我们称之为Main Broker)。此代理执行存储并将消息转发给远程代理。为此,我们有一个从此代理到两个远程代理的网络连接。我们希望其中一个远程代理作为主要服务器,另一个作为故障转移服务器。这是我们正在使用的网络连接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

在正常情况下,当所有代理都启动并运行并且消息被发送到Main Broker时,它将被转发到server1并被侦听器使用。

如果我们在server1上停止代理,则故障转移成功发生,并且消息将转发到server2并由侦听器成功使用。问题是当我们重新启动server1时,主代理继续将消息转发到server2。我们的要求是,一旦server1启动并运行,主代理应该开始将消息转发到server1,并且监听器应该连接回server1并使用消息。我们无法将randomize更改为true,因为我们希望一次只有一个servers1或server2处于活动状态。

请告诉我是否可能以及如何。

1 个答案:

答案 0 :(得分:4)

您需要将选项“priorityBackup”设置为true。你的URI将成为:

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

这将使server1(服务器列表中的第一个)成为优先备份。当server1关闭时,他将故障转移到server2,但不断尝试重新连接到server1。因此,当它再次返回时,他将切换回server1。此选项仅适用于5.6版

完整的详细信息如下: http://activemq.apache.org/failover-transport-reference.html

这里还有一个有趣的博客: http://bsnyderblog.blogspot.com/2010/10/new-features-in-activemq-54-automatic.html