enter image description here
有两个名为 GC1GC2 的客户端使用主题“ GC1Alive " & " GC2Alive ”通过ActiveMQ相互通信 . 他们只是通过使用这些主题发送心跳 .

Purpose

两个GC之间通信的目的是当 GC1 发生故障时, GC2 应该在故障转移场景中替换 GC1's 位置 .

故障转移方案由ActiveMQ自行处理,其中包含以下URL:

URL = "failover://(tcp://<AMQ Broker Url 1>:61616,tcp://<AMQ Broker Url 2>:61616)?timeout=30000";

Problem

AMQ Broker 1GC1 发生故障时,通信将在 SideBAMQ Broker 2GC2 之间启动 . 因为 GC2 在一段时间间隔之后没有从 GC1 收到任何节拍然后 GC2 接管 GC1 并且立即与 AMQ Broker 2 连接 .

但是当 AMQ Broker 1GC1 再次启动时, GC1 会自动将节拍发送到已在URL故障转移方案中定义的 AMQ Broker 1 . 所以现在 GC1 发送心跳到 AMQ Broker 1GC2 发送Heartbeat到 AMQ Broker 2 . 所以 GC1GC2 在上述用例之后并不是多余的 .

我怎么能让他们多余?意味着当 GC1AMQ Broker 再次上升然后 GC1 检查 GC2 的心跳是活着还是死了?

有没有其他设计可以帮助在 GC1GC2 之间 Build 集群?

任何帮助,将不胜感激 .