IP:192.168.146.129 | |||
集群A | 控制台 | 服务接口 | 集群通讯接口 |
Amq1 | 8161 | 51511 | 61601 |
Amq2 |
8162 | 51512 | 61602 |
Amq3 |
8163 | 51513 | 61603 |
1、集群1的每个activemq配置如下:(集群1的url包含集群2所有的队列信息,端口为队列的服务端口)
<networkConnectors>
<networkConnector uri="static:(tcp://192.168.146.130:51511,tcp://192.168.1.101:51512)"/>
</networkConnectors>
2、集群2的每个activemq配置如下:(集群2的url包含集群1所有的队列信息,端口为队列的服务端口)
<networkConnectors>
<networkConnector uri="static:(tcp://192.168.146.129:51511,tcp://192.168.146.129:51512,tcp://192.168.146.129:51513)"/>
</networkConnectors>
本例使用的是点对点消息队列的demo,使用方法请参考:
http://www.cnblogs.com/gossip/p/5970090.html
测试集群的高可用性:
1、集群1和集群2都注册到了ZooKeeper,都有各自的Master节点
2、两个集群中都只有Master节点的管控台才可用(下图为集群中Master队列收到的消息)
3、消息随机送到不同集群的Master队列中
4、手动停止集群2的Master队列,生产者卡顿了一下后继续往集群1发送消息,中间的消息并没有中断
5、重新启动集群2的Master队列后,生产者又重新向集群2的Master队列发送消息
六、消费者从多个集群消费消息
1、只有1个消费者时,随机从两个集群中消费消息
2、启动两个不同的消费者,他们都同时从集群1、集群2的消费消息。停止其中一个消费者后不影响另外一个消费者
3、关闭集群2的一个队列后(集群2只有两个队列,关闭其中1个后,整个集群都失效了),两个消费者都只从集群1消费消息