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 节点的选举。