在公司的项目中采用JMS来降低服务器之间的耦合性,但为了降低成本,商业软件是不考虑的,于是只能在开源的并且对商业友好的JMS服务器中选择一个了。
选择条件主要基于:
支持JMS 1.1规范
持久化,能满足商业应用所需的稳定性
满足项目的性能需求
最好本身提供JNDI服务
最好支持JMX
最好本身提供一个友好的管理工具
最好提供一份完整的文档
准备进行选择的JMS服务器有:OpenJMS、UberMQ、ActiveMQ、MantaRay、JORAM
OpenJMS:老牌的JMS服务器了,也是我最早知道的开源JMS服务器,不过只支持JMS 1.02,已经很长时间没有更新了,因此不予考虑。
UberMQ:采用NIO的JMS服务器,以前我学习NIO的时候看过它的代码,写的蛮不错的,也支持JMS 1.1。由于采用了NIO,所以具有很高的弹性,在满足项目的性能需求上没有什么问题;本身也提供JNDI服务,但是遗憾的是我bind其他类型的数据时会出错;提供admin和viewer两个管理工具,但是在管理工具里不能创建ConnectionFactory和Destination并绑定到JNDI;文档不太完整;最头痛的对于持久化支持不好,如果关闭JMS服务器再开启,所有保存在JMS中的信息就全部丢失了,这点没有办法满足商业应用所需的稳定性。
ActiveMQ:最近比较活跃的一个JMS服务器,主页上的介绍说在协议配置上可以选择支持NIO,但是我仔细看它所支持的协议,却并没有提到如何配置,并且在实际的测试中也并没有发现其有采用NIO的迹象,多连接一个Client端,服务器端就增多了一个线程。满足JMS 1.1,有多种方法进行持久化;本身不提供JNDI,也没有对JMX的支持,本身不带管理工具,采用Hermes进行管理(这个我会在以后提到),文档也相对较少。
MantaRay:也是比较活跃的一个JMS服务器,采用的是P2P模型,但是我不喜欢这种模型,对于JMS服务来说,很大的一个特点就是客户端可以不用永远在线,比如在更新某一个客户端时需要暂停服务,等服务再度开启时,这段时间内所接收到的信息并不会丢失,保存在服务器上,所以我并不能看到P2P模型应用在JMS服务器上的优势,况且采用JMS服务就是为了解除耦合,速度并不是唯一需要考量的事情。出于我不喜欢其所采用模型,并且在运行其所带的示例时都出现了示例时都出现了问题,两个客户端互发互收,但是彼此之间都收不到消息,于是不予考虑。
JORAM:支持JMS 1.1,可以持久化到文件,本身提供JNDI服务和提供对JMX的支持,自带的管理工具可以添加ConnectionFactory和Destination并绑定到JNDI,这点对实现动态管理来说非常有用;文档非常完备,100多页的PDF,包含了各种配置和调整信息。其稳定性考虑的尤其好,不仅考虑到JMS服务器的集群,甚至连JNDI的集群也考虑进去(尽管暂时对我而言还用不上),这点对于商业应用而言应该会有加分。
ActiveMQ是Apache License,JORAM是LGPL,这两者对于商业应用都是友好的;UberMQ和MantaRay采用是Dual License,UberMQ的Dual License是只要你不分发,就可以允许使用;而MantaRay是商业使用需要应用一个商业的License。
比较上面的这些JMS服务器,最终我是选择了JORAM,其满足了我的绝大部分要求,唯一比较遗憾的是其采用传统的IO模型,每连接一个Client端会在服务器端增加两个线程,这点稍微影响了服务器的弹性。不过考虑到我们的项目应用,这点暂时可以不用考虑,实在压力过大了,最多到时候采用JMS集群呗:)(转载文章请保留出处:
Java家(www.javajia.com))
分享到:
相关推荐
J2EE开源编程精要15讲 对应的源代码
J2EE开源编程精要15讲的源代码,是全部的哦,希望能帮助到需要的人,好不容易收集到的,想要的速下
J2EE 开源编程精要15讲 ——整合Eclipse,Struts,Hibernate和Spring的Java Web开发 邬继成 编著 飞思科技产品研发中心 监制 电子工业出版社 ISBN 978-7-121-05451-8
J2EE 与中间件技术课件,这是前言,以后几章陆续上传
本文档主要简述J2EE相关概念以及主要的规范,内含J2EE架构图。同时包含中间间的基本概念
介绍了J2EE在三层架构及安全、日志等方面一些常用的开源项目
j2ee与中间件教材配套包括java的各种语法,相当齐全
企业级 J2EE 开源框架:bboss
入门级j2ee开源项目 simplejee
J2EE开源框架培训讲义 主流WEB框架: STRUTS:COMMAND DRIVEN JSF:EVENT DRIVEN SPRING MVC:
J2EE 开源编程精要15讲 源代码
一个小的开源小平台,对初级,新手理解平台有帮助
J2EE开发之常用开源项目小记
J2EE的考点整理。非常详细,为ppt上整理所得,考试就看这个。
入门级j2ee开源项目 simplejee.7z
基于Java的入门级j2ee开源项目 simplejee.zip
基于java的入门级j2ee开源项目 simplejee.zip
J2EE开源编程精要15讲 ; 整合Eclipse、Struts、Hibernate和Spring的Java Web开发 源代码 已整理成两部分,这是part2
J2EE开源编程精要15讲 源代码 讨厌收费的.. 共享就共享,何必呢