以下是我尝试使用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>
答案 0 :(得分:1)
这是有效的配置。它表示(假设所有ClusterA代理都以这种方式配置),ClusterA中的代理将首先存储并转发到clusterB_broker1
,如果它已关闭,则将存储并转发到clusterB_broker2
,然后转到{如果clusterB_broker3
已关闭,则{1}}但是,根据您的群集内代理配置,它不会按照您的意愿执行。
代理配置必须才能自行设置故障转移,否则当clusterB_broker2
发生故障时您将丢失消息。如果clusterB代理未如下所述一起工作,那么当clusterB_broker1
发生故障时,发送给它的任何消息都不会出现在其他clusterB代理上或可访问。新消息将转发给他们。
如何在群集中进行故障转移取决于您的ActiveMQ版本。
最新版本(5.9.0)supports 3个故障转移(或主/从)群集配置。为了快速参考,它们是:
早期版本支持主/从配置,该配置具有一个主节点和一个从节点,其中消息被转发到从属代理。此设置维护得不好,有错误,已从ActiveMQ中删除。