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 入门指南

一、基本概念 (原文地址:点击打开链接) 对于MQ,我们需要知道4个名词:队列管理器、队列、消息、通道;对于编程设计人员,通常更关心消息和队列,对于维护管理人员,通常 会更关心队列管理器和通...
  • zhifanxu
  • zhifanxu
  • 2016年07月20日 10:53
  • 1112

Websphere MQ 报错 JMSWMQ2010

报错堆栈信息如下: com.cs.soa.excp.CSSOAException: com.ibm.msg.client.jms.DetailedInvalidDestinationExceptio...
  • javalover_yao
  • javalover_yao
  • 2011年08月15日 15:46
  • 1660

2010年度ESB产品盘点:开源ESB产品之Mule

2010年度ESB产品盘点:开源ESB产品之Mule 涉及到如下内容:Mule的架构重构;Mule3.x的核心新特征以及发展路线等。...
  • honnom
  • honnom
  • 2010年12月27日 13:05
  • 1639

WebSphere试用过期问题处理

WebSphere Application Server的试用期为60天,过期将无法启动WAS。显示信息如下:E:\IBM\WebSphere\AppServer\profiles\Dmgr01\bi...
  • gnail_oug
  • gnail_oug
  • 2017年03月13日 10:11
  • 783

WebSphere Message Queue(MQ)与WebSphere Message Queue Broker(MB)的区别

WebSphere Message Queue(MQ) WebSphere Message Queue Broker(MB)        首先从概念上来说,MQ是消息中间件,MB是E...
  • ma_hoking
  • ma_hoking
  • 2016年03月26日 08:39
  • 1010

IBM ESB 产品之间的比较

http://www.ibm.com/developerworks/cn/webservices/0811_magy_esb/ IBM 的 ESB 产品 IBM 有三款 ESB...
  • mydriverc2
  • mydriverc2
  • 2013年05月30日 14:29
  • 1678

各种MQ产品的比较

ActiveMQ和RocketMQ比较: 1.顺序,ActiveMQ不能保证严格的顺序,而RocketMQ可以保证严格的顺序 2.都可以进行持久化,RocketMQ支持配置代码,可以将数据持久化到...
  • jialanshun
  • jialanshun
  • 2018年02月01日 12:32
  • 28

RabbitMQ > 基于MQ的ESB

这里介绍一种基于MQ的RPC方案—ESB(Enterprise Service Bus 企业服务总线)的实现方式。1.ESB的由来 银行系统间传输报文的格式并不统一,如果把报文转换的功能设置在请求方...
  • u012006689
  • u012006689
  • 2016年03月09日 23:16
  • 1598

MQ介绍与选型

MQ介绍与选型 MQ使用场景 异步通信 有些业务不想也不需要立即处理消息。消息队列提供了异步处理机制,允许用户把一个消息放入队列,但并不立即处理它。想向队列中放入多少消息就放多少,然...
  • heiyueya
  • heiyueya
  • 2017年04月20日 18:48
  • 823

WebSphere MQ 开发快速入门

 WebSphere MQ 开发快速入门 本文将通过用于向队列发送消息和从队列接收消息的示例应用程序说明如何在 Linux 上着手安装和配置 WebSphere MQ,以及如何为 MQ 环境开发 Ja...
  • szkeven
  • szkeven
  • 2007年11月06日 16:25
  • 3237
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:2010年度ESB产品盘点:商业MQ产品之WebSphere MQ
举报原因:
原因补充:

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