2、生产者一生产的消息可以同时发送到群集1、集群2,生产者二也一样
一、本文目的
二、概念说明
1、多个集群
2、负载均衡
3、集群间的通讯:使用
networkConnector配置
三、Activemq集群的搭建
1、单个集群的搭建参考:
http://www.cnblogs.com/gossip/p/5977489.html
IP:192.168.146.129 | |||
集群A | 控制台 | 服务接口 | 集群通讯接口 |
Amq1 | 8161 | 51511 | 61601 |
Amq2 | 8162 | 51512 | 61602 |
Amq3 | 8163 | 51513 | 61603 |
四、Activemq集群之间通讯
Activemq集群搭建有多个方法,本文主要是通过配置networkConnectors实现,该配置放在<broker>节点下,原理为集群1配置连接集群2的所有activemq,反之亦然。配置如下:
这也是最大的缺点,扩展性比较差
这也是最大的缺点,扩展性比较差
1、集群1的每个activemq配置如下:(集群1的url包含集群2所有的队列信息,端口为队列的服务端口)
<networkConnectors>
<networkConnector uri="static:(tcp://192.168.146.130:51511,tcp://192.168.1.101:51512)"/>
</networkConnectors>
![](http://images2015.cnblogs.com/blog/35158/201610/35158-20161020154018357-1731105548.png)
![](http://images2015.cnblogs.com/blog/35158/201610/35158-20161020154018670-2102832283.png)
3、消息随机送到不同集群的Master队列中
4、手动停止集群2的Master队列,生产者卡顿了一下后继续往集群1发送消息,中间的消息并没有中断
5、重新启动集群2的Master队列后,生产者又重新向集群2的Master队列发送消息
六、消费者从多个集群消费消息
1、只有1个消费者时,随机从两个集群中消费消息
2、启动两个不同的消费者,他们都同时从集群1、集群2的消费消息。停止其中一个消费者后不影响另外一个消费者
3、关闭集群2的一个队列后(集群2只有两个队列,关闭其中1个后,整个集群都失效了),两个消费者都只从集群1消费消息
七、总结
上文中主要介绍了单个Activemq集群的高可用,一般应用已经足够。本文更进一步,作为高性能和扩展性的应用,通过多个集群的方式扩展队列,使得消息可以同时发送到多个队列,也可以通过多个消费者消费同一队列的消息。
八、参考资料
- http://blog.csdn.net/jason5186/article/details/18703151
- http://activemq.apache.org/networks-of-brokers.html