具有故障转移功能的ActiveMQ转发桥

时间:2014-04-14 18:58:31

标签: activemq mom

以下是我尝试使用ActiveMQ实现的内容: 我想拥有2个经纪人集群: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>

1 个答案:

答案 0 :(得分:1)

这是有效的配置。它表示(假设所有ClusterA代理都以这种方式配置),ClusterA中的代理将首先存储并转发到clusterB_broker1,如果它已关闭,则将存储并转发到clusterB_broker2,然后转到{如果clusterB_broker3已关闭,则{1}}但是,根据您的群集内代理配置,它不会按照您的意愿执行。

代理配置必须才能自行设置故障转移,否则当clusterB_broker2发生故障时您将丢失消息。如果clusterB代理未如下所述一起工作,那么当clusterB_broker1发生故障时,发送给它的任何消息都不会出现在其他clusterB代理上或可访问。新消息将转发给他们。

如何在群集中进行故障转移取决于您的ActiveMQ版本。

最新版本(5.9.0)supports 3个故障转移(或主/从)群集配置。为了快速参考,它们是:

  • 共享文件系统主从
  • JDBC Master Slave
  • 复制的LevelDB商店

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

相关问题