【问题标题】:Switching back to the primary remote broker after successful failover成功故障转移后切换回主远程代理
【发布时间】:2023-04-05 03:33:02
【问题描述】:

我们使用的是 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,因为我们希望一次只有一个 server1 或 server2 处于活动状态。

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

【问题讨论】:

    标签: apache activemq


    【解决方案1】:

    您需要将选项“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

    【讨论】:

      猜你喜欢
      • 2010-10-27
      • 1970-01-01
      • 2012-06-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-28
      • 2017-04-28
      • 1970-01-01
      相关资源
      最近更新 更多