2010年度ESB产品盘点:商业MQ产品之WebSphere MQ

原创 2011年01月11日 10:19:00

     作者:honnom@163.com
     时间:2011-01-11
     首发:http://blog.csdn.net/honnom


     2010 年 WMB 和 WMQ 并没有发布最新的版本。如果您使用的是最新版本,可以略过这篇文章。

     虽然最新的版本在几年前就已经发布了,直到 2010 年我才接触最新版本,而之前一直使用的是6.0

版本,所以权当作是我在 2010 的新发现吧。另外,如果大家想使用最新版本,只好想其他办法解决了,

因为最新版本 IBM 官方网站上暂时无法下载,不知何故。


     这篇文章只涉及到WMQ,关于WMB的内容会在另外一篇文章中涉及。

概述

      WMQ V7.0 给人带来了一些惊喜,本文仅从功能性增强、易用性和性能优化三个方面谈谈我对它的体会。

一、功能性增强

      WMQ V7.0 在功能上添加了一些新功能,最给力的两个新功能:Publish/Subscribe 完全整合到

Queue Manager 中和对 Web2.0 的支持。


1、Publish/Subscribe 完全整合到 Queue Manager

     在 V6.0 版本中,如果想使用 Publish/Subscribe 功能,必须安装一个 Publish/Subscribe

SupportPac, 必须通过该组件和 WMQ V6 交互,才能实现发布 / 订阅的功能。



     而在 V7.0 版本中,直接将 Publish/Subscribe 组件整合进来,作为 Queue Manager 的一个新

Publish/Subscribe 引擎,应此无需添加额外的组件。

2、支持 Web2.0

      WMQ V7 开始支持 Web2.0 , HTTP 应用可以直接通过 AJAX 技术和 RESTful API 访WMQ,

而不需要在 HTTP 应用中引入任何与 MQ 相关的资源,二者之间是松耦合。     

      实现原理: HTTP 应用和 J2EE 应用服务器中的 HTTP Bridge 交互, HTTP Bridge 包含一个

servlet ,该 servlet 通过 JCA 资源适配器和 WMQ 通信。


     GET 、 POST 和 DELETE 操作分别对应于 WMQ 中的 Browse 、 Put 和 Delete 操作。

二、易用性

     WMQ V7.0 版本在易用性上有了不少的提高,比如在 WebSphere MQ Explorer 中增加了对Topic

的管理。WebSphere MQ Explorer 是基于 eclipse 的工具,早在 V6.0 版本中就已经发布,但不提供

对 Topic 的管理。由于 Publish/Subscribe 已经完整集成到 Queue Manager 中,因此 V7.0版本中

提供了相关功能,比如管理 Topic 和 Subscriptions 。

 

 

     此外还提供了管理 Queue Manager Set( 队列管理器集 ) 的功能,从 eclipse 的视图角度来看,

它类似于 eclipse 对 working sets 的管理,该功能可以对多个 Queue   Manager 进行批量管理。

三、性能优化

     WMQ V7.0 在性能方面的优化,无疑是最大的亮点。下面从 WMQ Client 和 WMQ Server 两个方

面谈谈它在性能方面做了哪些优化。

1.WMQ Client 优化

( 1 ) Read ahead (预读)机制可将吞吐量提升 300%

      通过这种机制 Client 可以将大量的非持久化的消息读到 Client 的内存中, 从而避免每次取一条消

息都要和 Queue Manager 交互的额外开销。


      注意:由于会将大量的消息存放在内存中,并且已经从 Queue Manager 中删除,因此当 Client

出现宕机时,消息会丢失,所以对非持久化消息而言有好处。如果读取的消息中包含持久化消息, Client

会自动处理,消费该消息后会给 Queue Manager 发一个确认消息,表示该消息被消费掉,此时 Queue

Manager 才会删除该消息,所以对于持久化消息而言,可靠性仍然可以得到保证。

      未采用 read ahead 机制时,接收消息的机制:


      采用 read ahead 机制时,接收消息的机制:


(2) 异步发送和接收

      异步发送

      WMQ V6.0 只支持同步发送,也就意味着客户端 PUT 一条消息后,客户端必须同步阻塞等待,止

到 Queue Manager 返回 Completion Code 和 Reason Code 表示该消息发送成功,如下图:


     同步发送严重影响 WMQ 的吞吐量,为了解决这个问题, V7.0 中提供了异步发送,客户端 PUT 一

条消息后,并非同步阻塞,而是可以继续做其他的事情,如下图:


     异步接收
    
WMQ V6.0 中客户端通过触发器或者轮询的方式接收消息,这种方式其实是一种同步的方式,并不

支持异步的方式接收消息; V7.0 采用 MessageListener 回调的形式支持异步接收消息,提高了 45%

的吞吐量。

2.WMQ Server 优化

(1) JMS selector 在 Server 端做消息匹配,吞吐量提升了 250% 。

     WMQ V6.0 中 JMS selector 的实现机制是客户端逐条地从 Queue Manager 中 browse 队列中

的消息,先在客户端逐条查看消息,然后再通过 selector 的条件进行匹配,因此客户端和 Queue

Manger 间出现大量的网络通信,简而言之就是客户端必须先将队列中的所有消息逐条取出来,如果匹配

成功就消费,否则不做处理。 V7.0 将消息的匹配工作放在 server 端进行,只将匹配成功后的消息发送

给客户端,客户端并不需查看所有消息,因此减少了网络通信,降低网络开销。

(2) publish / subscribe 整合到 queue manager

     在WMQ V7.0中再不需要额外的发布订阅组件和 broker 交互,从而不需要将消息持久化两次。

 

四、总结

     IBM对WMQ的投入超过2500人月,该产品自发布起已有15年的历史,是MOM产品中最为优秀的产

品。但在功能上仍然有一些不足之处:

(1)不支持如同ActiveMQ的组合队列,也就是不能同时将一条消息通过一个发送操作发送到多个queue

以及topic上。

(2)不支持简单的路由功能,如果想使用路由功能,就必须使用IBM的ESB产品。

 

 

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Websphere MQ 报错 JMSWMQ2010

报错堆栈信息如下: com.cs.soa.excp.CSSOAException: com.ibm.msg.client.jms.DetailedInvalidDestinationExceptio...

MQ产品比较-ActiveMQ-RocketMQ

几种MQ产品说明: ZeroMQ : 扩展性好,开发比较灵活,采用C语言实现,实际上他只是一个socket库的重新封装,如果我们做为消息队列使用,需要开发大量的代码 RabbitMQ: 结合erla...

各类MQ产品比较

当下业界有很多MQ产品,我们作如下对比: RabbitMQ 是使用Erlang编写的一个开源的消息队列,本身支持很多的协议:AMQP,XMPP, SMTP, STOMP,也正是如此,使的它...

MQ产品比较-ActiveMQ-RocketMQ

几种MQ产品说明: ZeroMQ : 扩展性好,开发比较灵活,采用C语言实现,实际上他只是一个socket库的重新封装,如果我们做为消息队列使用,需要开发大量的代码RabbitMQ :结合erlan...

2011年度盘点——十大人物与产品

Dennis Ritchie 如果在Google上搜索Ritchie的简历,你会发现虽然有很多结果,但内容却相差无几。对于Ritchie的生平,我们能够确认的部分只有:他生于1941年9月9日,设计并...

安装ESB MQ 缺少/lib/ld-linux.so.2 解决办法

安装IBM MQ 过程中出现缺少/lib/ld-linux.so.2文件的解决办法 系统版本: MQ 缺少/lib/ld-linux.so.2 解决办法" TITLE="安装ESB MQ 缺少/l...
  • avwjq
  • avwjq
  • 2014-11-07 19:02
  • 604

ESB MQ命令

  • 2015-02-02 16:37
  • 339KB
  • 下载

WebSphere MQ Java 应用开发简单实例(上篇:客户端模式开发)(client mode和binding mode)

客户端模式、绑定模式连接 MQ Java 开发实例

初识消息队列——WebSphere MQ入门

消息队列(Message Queue,简称MQ) WebSphere MQ
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)