IBM WebSphere MQ 系列(一)基础知识
一、中间件
中间件处于应用软件和系统软件之间,是一种以自己的复杂换取企业应用简单化的可复用的基础软件。
在中间件产生以前,应用软件直接使用操作系统、网络协议和数据库等开发,开发者不得不面临许多很棘手的问题,如操作系统的多样性,繁杂的网络程序设计和管理,复杂多变的网络环境,数据分散处理带来的不一致性,性能和效率、安全问题等等。这些问题与用户的业务没有直接关系,但又必须解决,耗费了大量有限的时间和精力。于是,有人提出将应用软件所要面临的共性问题进行提炼、抽象,在操作系统之上再形成一个可复用的部分,供成千上万的应用软件重复使用。这一技术思想最终形成为了中间件产品。
从技术上讲,中间件是介于应用系统和系统软件之间的一类软件,它使用系统软件所提供的基础服务(功能),衔接网络上应用系统的各个部分或不同的应用,能够达到资源共享、功能共享的目的。
典型的中间件:
应用服务器-tomcat、IBM Websphere、Bea weblogic、Jboss
对象请求代理(ORB)-Java IIop、Java RMI,
消息中间件-WebSphere MQ 、Mirosoft MSMQ、BEA MessageQ、JBossMQ
二、WebSphere MQ 概念
1. 一种中间件产品,实现了消息队列框架,介于应用和操作系统之间,相关应用的基础平台。
2. 以实现应用系统在异构的操作系统平台之间稳定可靠地传递,交换重要的数据和信息,确保消息不丢失不复传。
3. 提供了强大、 安全、 稳定的消息传递主干,可帮助搭建企业服务总线(ESB)的基础传输层。
4. 实现 MQI(Message Queue Interface) 接口,实现异步通信。
消息队列接口为程序提供了一种异步通信方式。一个程序以一个队列作为中转与另一个程序相互通信,这个队列相对于该程序而言既可是本地的也可以是远程的。当程序A需要和程序B通信时,A只需PUT一条消息到一个和B相联系的队列上,程序A然后可以干别的事。它似乎感觉不到通信的发生,通信以及对通信错误的恢复是由队列管理完成的。
三、WebSphere MQ 的关键对象
队列管理器 - 装载和管理消息、队列、通道、进程、主题、侦听器、服务、名称列表、认证信息等MQ对象的容器;队列管理器负责维护它所拥有的队列,以及将它接收到的所有消息存储到相应的队列。
队列管理器是WebSphere MQ中的一个基本的独立的执行单元。一台MQ服务器可以运行一个或多个队列管理器。任何需要访问WebSphere MQ提供的服务的应用程序都必须先和队列管理器相连。
消息 - 数据的传输载体,与应用系统交互的数据均被包装成消息。
MQ 消息由两个部分:
应用程序数据(应用程序数据的内容和结构由使用它的应用程序定义);
消息描述符(消息描述符标识消息,并包含其它控制信息,如消息类型和消息的优先级)。
消息的类型:
请求消息 Request message:请求消息需要应答。从客户端发往服务器的查询和更新信息往往是请求消息。请求消息应该包含回复消息的路由信息,即回复消息发往什么地方。
回复消息 Reply message:回复消息是对请求消息的回应。请求消息中的信息决定回应消息的目的地。处理请求和回应的应用程序控制着消息间的关联,这种关联和队列管理器没有关系。消息自身带有足够的信息供应用程序实现这种关联。
报文消息 Datagram message:数据报消息是不需要回复的消息,报文消息只是一次单向的信息传送。
报告消息 Report message。:报告消息用于对一些系统故障的响应。有些报告消息是由应用程序创建的,有些报告消息是由队列管理器创建的。
队列 - 存储消息的数据结构。
按功能划分,包括:本地队列(local queue)、远程队列(remote queue)、传输队列(Transmission queue)、启动队列(init queue)、死信队列(Dead letter queue)、命令队列 (command queue)、回复队列(reply queue)、别名队列(alias queue)、动态队列(dynamic queue)、模板队列(template queue)等。
MQ的大部分功能通过队列功能体现,因此,弄清楚这些队列的概念和用法很重要。
通道 - 消息的通信/传输链路。
MQ 包括种不同类型的通道:
消息通道:单向通信链路,连接两个队列管理器。消息通道用于队列管理器之间传送消息。要双向发送消息,您必须定义每个方向的通道。
MQI 通道:双向通信链路,同步传输,连接MQI 客户机和服务器的队列管理器。MQI 通道用于MQI 客户机和队列管理器之间传送 MQI 调用和响应,也是MQ资源管理器连接程队列管理器的通道。
消息通道分为:发送方(Sender)、接收方(Receiver)、服务器(Server)、请求器(Requester)、群集发送(Cluster sender)、群集接收(Cluster receiver)等端类型。
对于每个消息通道,必须定义通道两端的消息通道类型;也就是说,消息通道是相互兼容的两端通道类型的组合,才能实现单向消息通信。
可使用下列通道两端定义的组合:
发送方 - 接收方
服务器 - 接收方
请求方 - 服务器
请求方 - 发送方(回调)
集群发送方 - 集群接收方
例如,若要实现最简单的消息通信,队列管理器A发送一条消息到队列管理器B,则使用发送方 - 接收方组合,需要在B端定义接收方通道,定义本地队列LQB,启用侦听器监听;在A端定义发送方通道,定义远程队列映射到LQB,定义通信队列,并启动发送方通道,然后向远程队列执行MQ PUT操作,放入消息,完成消息发送;然后,B端就可以通过 MQ GET操作获取消息。
MQI通道分为:服务器连接(指MQI通道的服务器端,代码为SVRCONN)、客户机连接(指MQI通道的客户机端,代码为CLNTCONN)。
若要建立客户端和服务端的连接,须在服务端定义服务器连接通道;
示例MQSC代码:DEF CHL(CHL.SERV) CHLTYPE(SVRCONN) TRPTYPE(TCP);
同时在客户端配置环境变量: 如 SET MQSERVER=CHL.SERV/TCP/192.168.222.132 (1414),即可建立连接。
消息通道代理程序(MCA):
每个通道定义都属于特定队列管理器,队列管理器可具有同一类型或不同类型的几个通道。通道的每一端是程序消息通道代理程序(MCA)。在通道的一端,调用方MCA从传输队列取出消息并通过通道发送它们。在通道的另一端,响应方MCA接收这些消息并将它们传递至远程队列管理器。
调用方 MCA 可与发送方通道、服务器通道或请求方通道关联。响应方 MCA 可与消息通道的任何类型关联。
进程 - 定义和标识响应 WebSphere MQ 队列管理器上的触发器事件的应用程序;进程与MQ的触发器机制相关;指MQ服务器的一个对象,注意和操作系统的进程概念区分。
侦听器 - 为MQ服务器侦听某个TCP 端口。对于某个MQ服务器,当允许客户端或者远程的队列管理器通过通道连接到本地的队列管理器时,必须启动侦听器,监听本地的某个TCP端口,默认端口号为1414。
以上为IBM WebSphere MQ 的入门简介,后续将谈到MQ Server 和 Client的安装和配置。
有关MQ的详细资料,可参考IBM的官方帮助文档,最有效和权威的学习资料:
MQ V7.0 在线帮助文档
MQ V7.5 在线帮助文档: