ActiveMQ单机networks集群部署

ActiveMQ中有一个概念:networks of brokers,它指的是连接ActiveMQ的消息代理在一起形成不同的拓扑结构。 简单的说,就是通过把多个不同的broker实例连接在一起,作为一个整体对外提供服务,从而提高整体对外的消息服务能力。通过这种方式连接在一起的broker实例之间,可以共享队列和消费者列表,从而达到分布式队列的目的。在http://blog.csdn.net/zuolj/article/details/53116439一文的第二小节详述了network机制,这章记录我在单机上部署一个networks of brokers 集群。

部署的架构图为:
activemq-network

broker之间的通过静态发现(static discovery)和动态发现(dynamic discovery)来维持彼此发现,两种机制的配置方式在《ActiveMQ的集群与高可用》中介绍了过了。这里,我们选用动态发现机制进行配置

三个broker的配置均为:

<networkConnectors>
    <networkConnector name="defalut" uri="multicast://default"/>
</networkConnectors>

由于networks of brokers使用共享存储的方式实现高可用,这里,我们选用基于共享文件存储的kahaDB存储机制。

所以三个broker的持久化存储配置为:

<persistenceAdapter>
    <kahaDB directory="/home/activemq/activemq_data/kahadb" 
        enableIndexWriteAsync="true" 
        enableJournalDiskSyncs="false"/>
</persistenceAdapter>

networks of brokers的集群配置中,与zookeeper+leveDB集群配置不一样的是,这里每一个broker实例,都应该有不同的brokerName,这里我把三个实例的brokerName配置为broker1、broker2、broker3.

然后,三个broker的监控端口和传输端口都要修改成不一致(如果是不同机器上启动的三个broker,那么这一步就不需要考虑了),这里,我的配置和《ActiveMQ单机部署zookeeper+levelDB集群》一致。

依次启动三个broker

[user@broker1] sudo ./activemq start
[user@broker2] sudo ./activemq start
[user@broker3] sudo ./activemq start 

这里,networks of brokers集群的高可用性是通过共享文件系统的锁机制实现的,先抢到锁的broker对外服务,所以,打开三个broker的监控界面,目前只有broker1的监控是可行的。
尝试关闭broker1,其他两个broker之一会自动启动。

现在,用producer生产2000个消息到这个networks集群,正在工作的broker监控上可以看到pending messages:2000,Messages Enqueued:2000,队列名称:TEST.FOO
关闭正在服务的broker(我这里是broker3),broker1抢到文件锁,打开传输端口和网络端口,监控broker1的界面
pending messages:2000
Messages Enqueued:0
队列名称:TEST.FOO
继续生产1000个消息发到同一个队列
pending messages:3000
Messages Enqueued:1000
队列名称:TEST.FOO

继续关闭这个broker,broker2启动服务
pending messages:3000
Messages Enqueued:0
队列名称:TEST.FOO
启动消费者去消费
pending messages:0
Messages Enqueued:0
Number of Consumers:1
队列名称:TEST.FOO

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值