【发布时间】: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 处于活动状态。
请告诉我这是否可行以及如何实现。
【问题讨论】: