使用ActiveMQ做项目一年多了,有很多感触。ActiveMQ从5.1到5.3,稳定了很多。尽管有时还会发生些诡异的地方,但对于开源软件已经足够了。主要的感觉就是ActiveMQ的最大优势在于性能。
最近开始研究JBoss的消息队列JBoss Messaging。JBoss原来有一个叫JBossMQ的项目,由于架构不适合继续升级。重新写一个新的项目叫JBoss Messaging。JBoss Messaging1.0在性能上还是与ActiveMQ相差比较大,当初项目选型时就是因为JBossMQ的性能不如ActiveMQ而放弃的,毕竟消息队列最重要的指标就是性能。现在JBoss Messaging2.0已经进入bate4的版本,最新的报告(JBoss的)性能已经全面追上并超过ActiveMQ,所以是时候研究一下了。。。
以下最要比较一下ActiveMQ5.3与JBoss Messaging2.0的优缺点,从十个方面对俩个MQ进行分析。对两个项目都不能十分精通,所以难免会有不对的地方,请多见谅。
评比级别从上到下为:好,较好,一般,较差,差
性能 :对于MQ的最重要要求,否则不如直接数据库了。ActiveMQ性能还是不用说的,非常好。Messaging的性能,还没有经过大量测试,不过已经有很大的提高,姑且给个较好。
集群 :由于消息队列一般会成为重要的业务的中间件,所有集群是必不可少的。ActiveMQ给出了三种集群方式,但都不好用。Messaging在这方面考虑的更多,支持也就更好。
稳定性 :这个不用说,非常重要。ActiveMQ一般几个月会出一次问题(不重启),在5.3版以后已经很稳定了。Messaging2还是bate版,现在还不能使用,及时正式发布了,到稳定也要2-3年。所以姑且给个一般
安全性 :一般来说MQ不会开放到公网,也就不是非常重要。俩个都支持多种安全方式,都给较好。
易用性 : 两者在使用上,都差不多。但在管理上ActiveMQ有一个强大的管理界面,而Messaging2没有,只能使用JMX。
优先级 : 这个问题是我使用ActiveMQ最头疼的问题,ActiveMQ为了性能直接省略了这个功能。而Messaging2是支持的。
JNDI支持 : 这个涉及到与其它模块之间调用的问题,以及与其它容器融合的问题。ActiveMQ支持简单的JNDI,Messaging2可以集成JBoss AS里,所以Messaging2这局胜出。
其它语言支持 : 这个问题实际上如果公司里有使用不同语言的组,就很重要。ActiveMQ支持很多种语言,而Messaging2目前不支持,需要使用其它中间件来解决这个问题。
文档和例子 : AciveMQ也像其它apache一样,文档例子都比较少。这点JBoss在被Red Hat收购后,有了很大改善。文档例子都很全。
支持: AciveMQ的支持也是比较少,主要还是论坛和wiki。而Messaging2在必要的时候可以使用付费模式,来解决问题。
以下是整理后评价:
ActiveMQ5.3 | JBoss Messaging2.0 | |
性能 | 好 | 较好 |
集群 | 较差 | 较好 |
稳定性 | 较好 | 一般 |
安全性 | 较好 | 较好 |
易用性 | 好 | 一般 |
优先级 | 差 | 好 |
JNDI支持 | 较差 | 较好 |
其它语言支持 | 好 | 较差 |
文档和例子 | 一般 | 较好 |
支持 | 一般 | 较好 |
尽管Messaging2在多项上占优势,但目前Messaging2还只是bate版,与ActiveMQ 5.3代码质量还有很大的差距。Messaging2可以说已经进入MQ的考虑范围,在未来开始使用的企业级中间件产品。但目前ActiveMQ还是开源MQ的主力。