JMS-ActiveMQ

最近要使用ActiveMQ做消息队列,由于之前对JMS没有一点了解,对于JMS的使用场景也不是很清楚,由于目前项目中的业务都不明确,也不是很清楚ActiveMQ到底有什么用。

按我自己的理解就是不同的系统之间要进行信息交互,而这些信息又没有时效性的要求。比如在线商城的下订单的行动,客户付款之后对于这个订单还是有很多的后续流程要进行,但是这个流程又不能是同步的,这类问题就是可以用消息队列来实现的。

之前我理解的activeMQ是用于取代类似本来要通过数据库交换信息的想法是不准确的,因为还要有持久化的问题,到底是用queue还是用topic类型也不明确。

ActiveMQ只是JMS的一个实现,主要作用就是用来发送消息的,跟具体的业务逻辑没有什么关系。

如果要通过集群来解决单点故障的问题的话,就要考虑每个broker之间如何共享消息,保证生产者的消息都能够被消费者消费的问题。

ActiveMQ的集群

Shared File System Master Slave

JDBC Master Slave


动手实践篇

看了两天的理论之后,对于activeMQ的应用场景和基本理论有了大概的了解,深入的东西还是不太懂,今天决定先按照一种方式把activeMQ的集群搭建起来试试,但是当动手去做的时候才发现有很多的问题,zookeeper集群是能够成功,停掉3台中的1台,也是能够选举出新的leader。

当启动activeMQ的时候,总是不能成功,服务端口没有打开,错误也看不懂是什么原因:

在网上查了一些资料,也没有找到很好的办法,并且都说activeMQ的集群功能还是很不完善的,加之通过zookeeper同步共享文件也是最近才添加的新特性,是会出现各种问题的。

明天准备通过共享文件系统的方式搭建master/slave模式的集群和通过JDBC数据库共享数据的方式,实在不行的话就只能单机了,毕竟通过集群还是会对生产和消费的效率产生影响的,通过进一步的关注再来解决后续的问题吧。