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

问题描述 投票:0回答:1

我们使用 Apache ActiveMQ 5.5。 我们有一个代理(让我们称之为主代理)在 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 处于活动状态。

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

activemq
1个回答
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

© www.soinside.com 2019 - 2024. All rights reserved.