ActiveMQ 中如何进行集群部署?它们之间的关系是什么?

ActiveMQ 中的集群部署主要有以下几种方式:

  1. 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>
  1. Network of Brokers:多个ActiveMQ服务器组成一个网络,相互通信,实现消息负载均衡和容灾。某个节点故障时,会自动切换。
<networkConnectors>
    <networkConnector  duplex="true" uri="static:(tcp://host1:61616,tcp://host2:61616)"/> 
</networkConnectors>
  1. 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之间进行消息同步和会话复制,没有主从概念。