2、配置levelDB,加载<broker>节点内

           bind:集群间通讯的ip和端口

           zkAddress:ZooKeeper地址,多个可用,逗号分隔

           hostname:主机名,可在/etc/hosts中进行配置

           zkPath:zkPath目录,可在ZooInspetor中进行查看

4、启动activemq

      /usr/local/src/activemq1/bin/activemq start

      可通过/usr/local/src/activemq1/data/activemq.log查看启动日志

 

5、关于管控台

       虽然3个activemq都启动了,但是同一时间只有Master对应的管控台可用,Slaver对应的管控台不可用

 

四、结合ZooInspector测试

1、打开ZooInspector(可自行搜索下载或从群中下载),输入ZooKeeper地址进行监控,如果3个activemq都启动成功,则显示如下:

2、Java测试代码

       代码可参考:http://www.cnblogs.com/gossip/p/5970090.html

       a) 配置集群IP(这里3个activemq的端口分别是51511,51512,51513)

        b)  测试代码

3、启动Java程序并发送消息

 

4、关闭Master队列(注意此时的Master队列为mq2)

a)   此时的ZooInspetor

 

5、重启mq2队列(重启后mq2加入队列成为Slaver,但是mq1还是Master,队列不受影响)

 

6、关闭mq1、mq2,仅剩mq3(由于只有一个队列,无法进行选举,所以整个队列都无法提供服务)


 

7、重启mq1(重启mq1后,mq1和mq3选举了Master队列,从而重新对外提供服务)

a) ZooInspecto显示mq1被选举为Master

b) 程序重新向队列消息,数据并没有中断 

 

五、总结

        本文演示了activemq伪集群的搭建过程及高可用的测试过程,通过举一反三可以将activemq部署到不同的机器上,从而实现相同的功能。

        遗留问题:ZooInspetor的activemq编号是自动生成的,很难发现其对应的队列,请问有没有可以自定义编号的方法,谢谢。

 

六、参考资料

1、http://www.cnblogs.com/gossip/p/5970090.html

2、http://activemq.apache.org/replicated-leveldb-store.html


转载地址:http://www.cnblogs.com/gossip/p/5977489.html

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐