ActiveMQ中如何实现高可用和故障转移?

ActiveMQ 中可以通过以下方式实现高可用和故障转移:
1、 高可用:

  • 使用 Master-Slave 模式,当 Master 节点down机时,Slave 节点会自动成为 Master 节点继续提供服务:
<broker brokerName="master"   dataDirectory="/activemq/master/data"/>

<broker brokerName="slave1"  masterConnectorURI="tcp://master:61616"  
                         dataDirectory="/activemq/slave1/data"/>
<broker brokerName="slave2"  masterConnectorURI="tcp://master:61616"  
                         dataDirectory="/activemq/slave2/data"/> 
  • 使用共享存储,所有的 Broker 节点使用同一个存储,down机节点上的消息会被其他运行节点消费:
<persistenceAdapter>
  <kahaDB directory="${activemq.data}/kahadb"/>
</persistenceAdapter>
  • 发送端和消费端設定多个 Broker 地址,down机自动切换到运行节点:
<brokerURI>failover:(tcp://node1:61616,tcp://node2:61616)</brokerURI>

2、 故障转移:

  • 多个 Master 节点构成集群,并选举出一个 Master 作为 aktive Master,其它为 standby Master。当 aktive Master 节点 down 机时,会触发新一轮选举产生新的 aktive Master:
<broker brokerName="master1"  dataDirectory="/activemq/master1/data" zkAddress="127.0.0.1:2181"/>
<broker brokerName="master2"  dataDirectory="/activemq/master2/data" zkAddress="127.0.0.1:2181"/>  

使用 ZooKeeper 协调多个 Master 节点的选举。