带故障转移的ActiveMQ转发网桥

带故障转移的ActiveMQ转发网桥,activemq,mom,Activemq,Mom,以下是我尝试使用ActiveMQ实现的目标: 我想要两组经纪人:clusterA和clusterB。这两个集群之间的数据应该被镜像。因此,当clusterA收到一条消息时,它将被存储在storageA中,并且该消息也应该被转发到clusterB(如果有这样的需求)并存储在storageB中。另一方面,如果clusterB收到消息,则应将其转发给clusterA。 我想知道根据上面的描述,这样的配置是否被认为是有效的: <networkConnectors> <n

以下是我尝试使用ActiveMQ实现的目标: 我想要两组经纪人:clusterA和clusterB。这两个集群之间的数据应该被镜像。因此,当clusterA收到一条消息时,它将被存储在storageA中,并且该消息也应该被转发到clusterB(如果有这样的需求)并存储在storageB中。另一方面,如果clusterB收到消息,则应将其转发给clusterA。 我想知道根据上面的描述,这样的配置是否被认为是有效的:

    <networkConnectors>
    <networkConnector 
          uri="static:(failover(tcp://clusterB_broker1:port,tcp://clusterB_broker2:port,tcp://clusterB_broker3:port))"
          name="bridge"
          duplex="true"
          conduitSubscriptions="true"
          decreaseNetworkConsumerPriority="false"/> 
    </networkConnectors>

这是一个有效的配置。它表示(假设所有ClusterA代理都以这种方式配置)ClusterA中的代理将首先存储并转发到
clusterB\u broker1
,如果关闭,则将存储并转发到
clusterB\u broker2
,如果
clusterB\u broker2
关闭,则存储并转发到
clusterB\u broker3
。但是,根据集群内代理配置的不同,它不会做您希望它做的事情

必须为故障切换本身设置代理配置,否则当
clusterB_broker1
停机时,您将丢失消息。如果clusterB代理未按如下所述协同工作,则当
clusterB_broker1
发生故障时,发送给它的任何消息将不存在或无法在其他clusterB代理上访问。新消息将转发给他们

如何在集群内进行故障切换取决于ActiveMQ版本

最新版本(5.9.0)3故障切换(或主/从)群集配置。为方便参考,它们是:

  • 共享文件系统主从
  • JDBC主从机
  • 复制的LevelDB存储

早期版本支持主/从配置,该配置有一个主节点和一个从节点,其中消息被转发到从代理。此设置未得到很好的维护,存在错误,已从ActiveMQ中删除。

谢谢您的回复,我不太明白,您是在谈论组成群集的代理的数据复制或故障切换吗?我更新了我的答案。如果这更清楚,请告诉我。