ActiveMQ 中的集群部署主要有以下几种方式:
- Master-Slave:一个主节点和多个从节点,主节点负责读写,从节点只读数据。主节点失败时,需要手动切换从节点。
<broker xmlns="http://activemq.apache.org/schema/core" brokerName="master" dataDirectory="${activemq.data}">
...
</broker>
<broker xmlns="http://activemq.apache.org/schema/core" brokerName="slave1" dataDirectory="${activemq.data}">
<transportConnectors>
<transportConnector uri="tcp://master:61616" duplex="true"/>
</transportConnectors>
</broker>
- Network of Brokers:多个ActiveMQ服务器组成一个网络,相互通信,实现消息负载均衡和容灾。某个节点故障时,会自动切换。
<networkConnectors>
<networkConnector duplex="true" uri="static:(tcp://host1:61616,tcp://host2:61616)"/>
</networkConnectors>
- Cluster:将多个Broker配置为一个 logical group,组内Broker之间进行会话复制和队列同步,实现集群方式部署,避免单点故障。
<broker brokerName="broker1" xmlns="http://activemq.apache.org/schema/core">
<haPolicy>
<policyMap>
<policyEntries>
<policyEntry topic=">" producerFlowControl="false">
<clustered>true</clustered>
</policyEntry>
</policyEntries>
</policyMap>
</haPolicy>
</broker>
Broker之间的关系:
- Master-Slave:主从关系,从Broker连接主Broker,接收消息和维护会话。
- Network of Brokers:等级关系,Broker之间相互连接,分发消息负载,没有主从概念。
- Cluster:对等关系,Broker之间进行消息同步和会话复制,没有主从概念。