在公司的项目中采用JMS来降低服务器之间的耦合性,但为了降低成本,商业软件是不考虑的,于是只能在开源的并且对商业友好的JMS服务器中选择一个了。
选择条件主要基于:
支持JMS 1.1规范
持久化,能满足商业应用所需的稳定性
满足项目的性能需求
最好本身提供JNDI服务
最好支持JMX
最好本身提供一个友好的管理工具
最好提供一份完整的文档
准备进行选择的JMS服务器有:OpenJMS、UberMQ、MantaRay、ActiveMQ、JORAM
OpenJMS:
老牌的JMS服务器了,也是我最早知道的开源JMS服务器,不过只支持JMS 1.02,已经很长时间没有更新了,因此不予考虑。
UberMQ:
采用NIO的JMS服务器,以前我学习NIO的时候看过它的代码,写的蛮不错的,也支持JMS 1.1。由于采用了NIO,所以具有很高的弹性,在满足项目的性能需求上没有什么问题;本身也提供JNDI服务,但是遗憾的是我bind其他类型的数据时会出错;提供admin和viewer两个管理工具,但是在管理工具里不能创建ConnectionFactory和Destination并绑定到JNDI;文档不太完整;最头痛的对于持久化支持不好,如果关闭JMS服务器再开启,所有保存在JMS中的信息就全部丢失了,这点没有办法满足商业应用所需的稳定性。
MantaRay:
也是比较活跃的一个JMS服务器,采用的是P2P模型,但是我不喜欢这种模型,对于JMS服务来说,很大的一个特点就是客户端可以不用永 远在线,比如在更新某一个客户端时需要暂停服务,等服务再度开启时,这段时间内所接收到的信息并不会丢失,保存在服务器上,所以我并不能看到P2P模型应 用在JMS服务器上的优势,况且采用JMS服务就是为了解除耦合,速度并不是唯一需要考量的事情。出于我不喜欢其所采用模型,并且在运行其所带的示例时都 出现了示例时都出现了问题,两个客户端互发互收,但是彼此之间都收不到消息,于是不予考虑。
ActiveMQ:
最近比较活跃的一个JMS服务器,主页上的介绍说在协议配置上可以选择支持NIO,但是我仔细看它所支持的协议,却并没有提到如何配置,并且在实际的测试中也并没有发现其有采用NIO的迹象,多连接一个Client端,服务器端就增多了一个线程。满足JMS 1.1,有多种方法进行持久化;本身不提供JNDI,也没有对JMX的支持,本身不带管理工具,采用Hermes进行管理(这个我会在以后提到),文档也相对较少。
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)
)
分享到:
相关推荐
开源视频服务器软件MJPG-streamer的研究和应用.pdf
HotApp云笔记 - 精品开源demo-基于免费API(源代码+截图)HotApp云笔记 - 精品开源demo-基于免费API(源代码+截图)HotApp云笔记 - 精品开源demo-基于免费API(源代码+截图)HotApp云笔记 - 精品开源demo-基于免费API(源...
NULL 博文链接:https://xieruilin.iteye.com/blog/1036677
Lua游戏服务器框架开源源码-----crossover
阅读Google的C++代码规范,并与大家分享
pomelo-citrus是一个使用Ruby编程语言开发的开源游戏服务器框架,其软件架构和设计均来源于pomelo并已实现了pomelo的大部分功能。 标签:pomelo
开源GIS---java系列开源GIS---java系列开源GIS---java系列开源GIS---java系列开源GIS---java系列开源GIS---java系列开源GIS---java系列开源GIS---java系列开源GIS---java系列开源GIS---java系列开源GIS---java系列...
前端开源库-jms-storageJMS存储、JMS服务器存储模块和部署
前端开源库-jms-deployJMS部署,部署到JMS服务器
EduSoho开源网络课堂---校园版简介 EduSoho开源网络课堂是阔知自主研发的开源在线教学平台 1、教学行为数据化 学生学习轨迹数据化,轻松抓住学习难点、痛点 可视化教学数据统计,教学管理更有条有理 2、多样化...
EduSoho开源网络课堂是阔知自主研发的开源在线教学平台,它不仅拥有丰富的教学互动、社区化学习体验,支持课程共享、学分互认、教务对接的开放产品架构,同时结合云计算和教育大数据技术,更可轻松应对百万师生的...
开源e-learning软件---eConf
ZCS+开源版快速安装手册-单服务器.pdf ZCS+开源版快速安装手册-单服务器.pdf ZCS+开源版快速安装手册-单服务器.pdf ZCS+开源版快速安装手册-单服务器.pdf
Java开源邮件服务器apache-james-2.3.2源代码
开源项目-vj---droidbot.zip,golang中与frinkiac交互的slack命令服务器
前端开源库-oauth2-server用于在node.js中实现OAuth2服务器的OAuth2服务器、完整、框架不可知、兼容且经过良好测试的模块
开源项目-esimov-triangle.zip,▲ Triangle - Convert images to computer art with Go.
前端开源库-feather2-server-nodeFeather2服务器节点,Feather2服务器节点