IBMMQSeries通信中间件技术及应用简介
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
IBMMQSeries通信中间件技术及应用简介摘要:IBMMQSeries通信中间件概念和技术介绍,并结合实际应用场
景简要说明。
关键词:MQ;中间件;队列
YANGChao
(GuangdongPostalInformationTechnologyBureauDevelopmentDepar tmentofGuangdong,Guangzhou510898,China)
Keywords:MQ;middleware;queue
IBMMQSeries是IBM的商业通讯中间键。IBMMQSeries提供一个具有
工业标准、安全、可靠的信息传输系统。它以消息为载体,以队列为媒介
进行本地、远程以及跨平台的信息传递。随着计算机网络技术的发展和分
布式计算机系统的应用,信息系统间的数据交换已经成为不可或缺的组成
部分,商业中间键在此基础上应运而生,它既可以保证消息传输的可靠性、高效率和安全性,同时可以替代系统通信模块,进而大幅度减少系统的开
发周期,使设计人员将精力更多的放到业务逻辑和数据逻辑的设计上。该
文就MQSeries的工作原理和在广东省的业务应用做一个简单的介绍。
1IBMMQSeries工作原理
MQSeries为程序提供了一种安全可靠的通信模式,支持本地应用和
分布应用,本地应用可以提供一台物理主机上的不同应用程序之间相互通信;分布应用可以提供联网的主机上不同应用程序之间相互通信。MQSeries为应用程序提供了一种可靠的通信机制,不管是本地应用还是
分布应用,参与通信的应用程序之间无需关注网络通信模块的实现,发送
方将数据组装成消息,放入消息队列,接收方从消息队列中获取消息,从
而完成一次通信过程。队列管理器负责MQSeries内部对象的管理、通信
链路的维护以及消息传递的可靠性和完整性。
MQSeries的消息传递模式见图1:
程序A要和程序B需要交换数据,程序A把数据封装成一个消息并放
入队列1中,程序B从队列1中以先进先出的顺序取出消息,处理完成后
将应答消息放入队列2中,程序A同样以先进先出的顺序从队列2中取出
应答消息,从而完成了一次数据交换。
MQSeries本地应用模式:
和本地应用情况不同的是:这里需要两个队列管理器QM1和QM2协同
工作,消息从本地系统(LocalSystem)上放入本地的队列管理器QM1的
远程队列(RemoteQueue),远程队列是一个虚拟队列,实际上消息是放
在本地的传输队列(TransmissionQueue)中,QM1将消息通过通道(MessageChannel)传输到远程系统上的队列管理器QM2的本地队列中,
远程系统(RemoteSystem)就可以从QM2的目的队列(DestinationQueue)中接收来自本地系统的消息了,这样就完成了本地系统和远程系统的一次
消息交互。由于MQ是跨平台中间件,本地和远程可以是两种不同的操作
系统。
在MQSeries的支持下,应用程序之间交换数据和传统方式有了很大
的不同,通信过程变得更为简单和易于移植,无需关注对方应用的部署位置,队列管理器负责消息的本地存储和网络传递。
2MQSeries组成模块
1)队列管理器:管理所有消息传递要素,实现消息的网络层传递,保证消息的传递安全可靠。
2)队列:存放应用程序之间传递的消息,消息以先进先出的顺序被放入和取出,队列分为本地队列和远程队列两种。
3)本地队列:它是一个实体队列,可以最大程度地保证放入队列的消息的完整性,即使系统断电消息也不会丢失。
4)远程队列:它是一个映射队列,定义了分布应用场景下远端队列管理器中的接收队列。
5)传输队列:它是一个本地队列,和远程队列绑定,保存了将要发送到远端的消息。
6)死信队列:它是一个本地队列,用于存放异常条件下无法传递的消息。
7)发送/接收通道:在两个不同系统上队列管理器之间的专用数据传输链路,和远程队列绑定,消息通过通道进行系统间相互传递,通道计数器为当前通道上传递的消息个数。
8)应用程序接口:应用程序或信息系统操作MQSeries模块的函数API接口。
分布应用模式下IBMMQSeries消息的传递过程如下:
1)发送消息时:
本地发送队列→本地传输队列→本地发送通道→对方接收通道→对方接收队列。
2)接收消息时:
对方发送队列→对方传输队列→对方发送通道→本地接收通道→本地
接收队列。
IBMMQSeries可以通过将文件拆分成消息一条条发送出去,对方收到
消息后将消息内容写入目的文件,从而实现文件的发送过程,这个过程需
要自己编写库函数,将库函数配置到本地发送通道和对方接收通道的“消
息出口名称”属性中,MQ自动进行调用。
3MQSeriesMQI简介
MQSeries提供了一套应用开发接口MQI给应用程序调用。图4显示
了MQI的调用流程。
1)MQCONN建立和队列管理器的连接,调用成功后返回一个操作句柄,通过句柄可以进行队列的操作。
2)MQOPEN打开一个队列,队列必须是调用MQCONN所连接的队列管
理器管辖的范围,队列可以是本地队列和远程队列。
3)调用MQPUT向队列中存放消息;调用MQGET从队列中获取消息;
调用MQINQ获得当前打开队列的属性;调用MQSET改变当前打开队列的属性。
4)MQPUT1是一个操作集合,它顺序执行了三个函数调用,首先调用MQOPEN打开一个队列,然后调用MQPUT向队列中放入消息,最后调用MQCLOSE关闭当前队列。
5)MQCLOSE关闭已打开队列
6)MQDISC断开和当前队列管理器的连接。