« | August 2025 | » | 日 | 一 | 二 | 三 | 四 | 五 | 六 | | | | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | | | | | | | |
| 公告 |
戒除浮躁,读好书,交益友 |
Blog信息 |
blog名称:邢红瑞的blog 日志总数:523 评论数量:1142 留言数量:0 访问次数:9692637 建立时间:2004年12月20日 |

| |
[j2ee]开源MQ的选择  原创空间, 文章收藏, 软件技术, 电脑与网络
邢红瑞 发表于 2008/8/9 13:04:41 |
基于JMS的有以下几种:ActiveMQ ,OpenJMS,mom4j,JORAM,UberMQ,MantaRay,jbossmq等等。1 ActiveMQ 开源用的最多的,绝对排第一,是一个开放源码基于Apache 2.0 licenced 发布并实现了JMS 1.1。它能够与Geronimo,轻量级容器和任Java应用程序无缝的给合。ActiveMQ支持多种网络拓扑模型,甚至支持同一JVM内的JMS应用。默认采 用Apache Derby数据库持久化,也可以配置为各种主流数据库来持久。activemq4推荐用数据库做后端,以处理灾难等事情。activemq5新做了一个存储模型,http://activemq.apache.org/amq-message-store.html 。很多ESB,J2EE Server已经已经默认使用它了,比如mule,serviceMix,尤其是mule,http://www.mulesource.com。
activemq默认的配置性能偏低,不适合生产环境,但是配置又太多了,研究activemq花的时间比较多,投入回报不高 ,本身不提供管理工具;示例代码非常少;虽然主页上的文档看上去比较全面,但是缺乏一种有效的组织方式,文档只有片段,用户很难由浅入深进行了解,二来文档整体的专业性太强,文档是写给ActiveMQ的专家看的,对于普通用户而言,门槛有点高。在研究阶段可以通过查maillist、看Javadoc、分析源代码来了解,但是没有一份稳定的支持是很难在企业中正式使用的。2 JORAM是ObjectWeb之下的JMS消息中间件,文档非常完备,并且带有很多示例,就算没有JMS任何经验的人一遍看下来,也能完成对JORAM的配置和管理。自带管理工具,配置JNDI非常方便,支持JMX,可以通过JMX工具进行管理 ,方便简单的权限控制。缺点 判断JMS客户端是否在线非常缓慢,甚至不会通知应用。遇到过调用consumer.receive()后,即使网络连接断开,该方法也不返回,也不抛出异常,就这样一直傻等,绝对不知道除了啥问题。 持久化机制有问题,JORAM采用的是Java序列化的方式来持久,可是它的序列化类里面居然连serialVersionUID都没有定义!4.3.8比4.3.1有了改进,可是我也无法部署到生产系统上,因为无法把以前版本的持久化的消息给读出来!开发社区没有开放Bug管理系统,碰到问题也很难反馈,虽然可以通过maillist反馈一些信息,但是毕竟非常不方便。spring可以使用ActiveMQ和JORAM,比较方便。3 OpenJMSOpenJMS是一个开源的Java Message Service API 1.0.2 规范的实现,它包含有以下特性: *. 它既支持点到点(point-to-point)(PTP)模型和发布/订阅(Pub/Sub)模型。 *. 支持同步与异步消息发送 *. JDBC持久性管理使用数据库表来存储消息 *. 可视化管理界面。 *. Applet支持。 *. 能够与Jakarta Tomcat这样的Servlet容器结合。 *. 支持RMI, TCP, HTTP 与SSL协议。 *. 客户端验证 *. 提供可靠消息传输、事务和消息过滤。也是目前使用最多的开源JMS服务器,但是最新的更新是2006年,出了bug,难以得到及时的解决,无法进行企业级应用。4 jbossmq jboss的JMS实现。性能不差,但是至今没有找到一个脱离jboss 环境的一个例子,没有必要使用jboss这个j2ee容器。5 其他的没有仔细研究非java的有 starling,rabbitmq ,memcacheqstarling是twitter公开的,ruby编写,使用memcached协议 ,其实不如使用memcacheq,sina开发,支持国货,c的应该比ruby跑得快。rabbitmq是AMQP 用 Erlang 实现的 MQ ,性能超强,但是另外得学习Erlang。综合所述,ActiveMQ是最终的选择,实在不行使用IBM的MQ。 |
|
|