JMS集群OpenMQ的那些事

8 十月, 2010 (22:38) | JMS, Java消息中间件, MiddleWare, OpenSource, openmq, 性能, 架构设计 繁体 English    DeliciOus    分享到新浪微博
作者: H.E. | 您可以转载, 但必须以超链接形式标明文章原始出处和作者信息及版权声明
网址: http://www.javabloger.com/article/openmq-jms-clustering.html
豆瓣读书 向你推荐有关 JMSJava消息中间件MiddleWareOpenSourceopenmq性能架构设计、 类别的图书。

我的废话:
JMS、OpenMQ 这2个词不断的在我的空间里出现,因为我们对于JMS服务器的重视程度很高,JMS在整个系统中的角色是系统组件之间通讯的桥梁,我们利用JMS服务器构建 “低耦合,高内聚”的重要手段之一,曾经我们想过采用http、ejb来实现,但是这2个手段无法满足以下4个需求
    1.不停机,不改变集群中任何节点的状态,可以对集群中的节点任意添加,进行压力分载,
    2.发出一个请求,集群中的所有应用程序节点都能接收相同数量的请求,
    3.通信中组件的接收端失效,当生效后再运行时能继续接收到上次失效前的请求,
    4.请求中有多种不同的类型,下面的集群节点可以按照不同的类型接收,可以动态的指定集群节点中的机器完成不同的任务。

经过多番比较最后决定采用JMS作为系统中组件与组件通讯的重要手段。

废话少说,进入正题,介绍在实践中使用JMS的一些经验,和大家分享一下:

失效转发
有2台Sun的OpenMQ服务器集群后, 并不是一个work,另外一个standby,如果你认为是这样,那么只是一些表面的现象。我们可以做一个测试,如果你向其中一个jms服务器发送消息Topic或者是Queue类型的消息,那么你也可以在另外一台服务器上接收到消息。说明他们之间在集群后内部是完全相通的,这样集群中无论其中任何一个JMS的服务器down机消息都会失效转发到另外一台上,因为当你向其中一台发送消息的时候JMS集群内部就完成了消息copy。
如图所示:

BWT:如果你测试在JMS失效转发的过程中是否生效,那么请注意,如果你发送的是大对象(2M以上的数据)会导致失效转发失败,因为默认反复尝试的时间间隔是5000毫秒,你需要提高imqReconnectInterval 的值(毫秒)作为时间间隔反复尝试连接每个地址的之间时间间隔的长短。

压力分载
如果你有2台以上的JMS服务器作为集群的节点,首先你需要在你的发送端和接收端的主机地址中写上这些JMS服务器的ip地址,其次还需要注意,在发送端和接收端的连接属性中设置imqAddressListBehavior 指定了尝试连接指定地址的顺序。如果将此属性设置为字符串 PRIORITY,将按地址在地址列表中的显示顺序尝试连接。如果属性值为 RANDOM,将按随机顺序尝试连接地址;这种方式非常有用,例如,当许多 Message Queue 客户端共享同一个连接工厂对象时,这种方式有助于防止所有客户端尝试连接到同一个代理地址。
也就是说如果你不配置,那么发送端的压力始终只会指向一台,就是你写在在代理地址列表 (imqAddressList ) 中的第一个主机。

如图所示:

相关文章:
JMS与JMX
重谈GlassFish服务器优化
OpenMQ命令
GlassFish OpenMQ JDBC
Spring集成 JMS OpenMQ
百万级 大型J2EE Push Mail 项目后记 3
GlassFish JMS 集群

–end–

豆瓣读书  向你推荐有关 JMS Java消息中间件 MiddleWare OpenSource openmq 性能 架构设计、 类别的图书。



Creative Commons License
本文由J2ee企业顾问-黄毅创作,并已采用创作共用署名2.5中国大陆版许可证授权。

评论

Comment from nickevin
Time 2010年10月28日 at 10:03 上午

相当之赞 谢谢分享

OpenMQ与 ActiveMQ以及RabbitMQ的区别在哪 基于哪方面考虑让你选择了OpenMQ

Comment from H.E.
Time 2010年10月28日 at 5:24 下午

整个项目的jee服务器是GlassFish,而GlassFish JEE服务器中已经包含OpenMQ服务器,采用OpenMQ无疑是为了更紧密的与系统兼容
nickevin,感谢你的关注。

另外,对与ActiveMQ、RabbitMQ、OpenMQ三者之间的比较 将来有空我会做一个吞吐量(QPS)和响应时间(RT)相关性能测试。

Comment from nickevin
Time 2010年11月5日 at 11:01 下午

最近工作忙 才看到你的回复 我会继续关注下文的

Comment from wuping
Time 2010年11月9日 at 9:08 上午

博主的博客写的很不错额 学习了

评论

评论也是有版权的!




2228