WebSphere_MQ一小时快速入门

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

WebSphere MQ一小时快速入门
一、什么是中间件
中间件是处于应用软件和系统软件之间的通用服务,是一类以自己的复杂换取企业应用简单化的可复用的基础软件。

中间件主要分为消息中间件、应用服务器中间件、交易中间件等等。

而今天,笔者晓奕主要向大家介绍的正是IBM厂商的消息中间件WebSphere MQ。

二、WebSphere MQ简介
Websphere MQ是IBM的商业消息通讯中间件(Commercial Messaging Middleware)。

Websphere MQ提供一个具有工业标准、安全、可靠的消息传输系统。

它可实施在广泛的IBM和非IBM 平台上,它的功能是控制和管理一个集成的商业应用,使得组成这个商业应用的多个分支程序(模块)之间通过传递消息完成整个工作流程。

通过使用WebSphere MQ用户可以简单方便的开发出可靠、高效的分布式应用系统。

三、WebSphere MQ主要对象
消息是对使用它的应用程序有意义的以字节为单位的字符串。

消息可以用来实现在相同或不同平台上应用程序间的通信。

队列是用于存储消息的数据结构。

按功能可以分为本地队列、远程队列、传输队列、模板队列、别名队列、死信队列等等。

队列管理器在WebSphere MQ中队列管理器是基本的软件系统,队列管理器可看成是队列和其他对象的容器。

通道是一种提供从一个队列管理器到另一个队列管理器的通信路径。

它又叫消息通道,用在分布式的队列把消息从一个队列管理器发送到另一个队列管理器。

按照定义可以分为发送通道(Sender)、接收通道(R eceiver)、服务器通道(Server)、请求器通道(Requester)等。

MQSC命令是用来管理队列管理器对象,包括队列管理器本身、通道、队列和进程定义。

可以使用 ru nmqsc 向队列管理器发出 MQSC 命令。

四、WebSphere MQ体系结构
WebSphere MQ的体系结构如图所示,它是由许多对象所组成的,主要包括队列管理器、队列、通道、进程定义等对象。

队列管理器和DB2数据库中的实例相似,队列管理器好比是数据库实例,队列好比是数据库中的数据表,而消息就好似数据表中的某一行数据。

五、本文的任务目标
本文完整的演示了WebSphere MQ的两个最常用的任务。

5.1 建立和验证一个队列管理器和一个队列的本地安装;
5.2 建立和验证使用两个队列管理器(一个作为发送方,一个作为接收方)的服务器至服务器的安装。

六、MQ的本地安装:
注意:WebSphere MQ对象定义是区分大小写的。

如果您是使用MQSC命令以小写方式输入的任何文本会自动转换成大写,除非用单引号将他们引起来。

所以请您对照以下例子进行操作的时候,请注意大小写和单引号的使用,以免影响学习效果。

6.1 任务概述:
使用MQSC命令方式建立队列管理器to.queue.manager,同时创建MYRECEIVER.QUEUE队列,并测试往队列中放入和读取消息。

6.2定义配置的具体步骤:
(1)作为mqm组中的用户登录到shell中;
通过输入以下命令创建名为to.queue.manager的队列管理器,-q参数是指创建为缺省的队列管理器; crtmqm –q to.queue.manager
命令过程中你将会见到提示信息,它们通知您已经创建了队列管理器并且已经创建缺省的WebSphere MQ对象。

(2)查看队列管理器是否已经建立成功,请使用dspmq命令:
dspmq
该命令是用来显示系统中存在的队列管理器,如上图所示,to.queue.manager已经建立成功,并处于未运行的状态。

(3)要启动队列管理器,请输入:
strmqm 或者 strmqm to.queue.manager
strmqm 后不加参数,表示启动缺省的队列管理器,为避免启错对象,建议指定队列管理器来启动:
提示队列管理器已经启动成功,管理员可以继续使用dspmq命令产看队列管理器的状态如下:
(4)通过输入下述命令来启用MQSC命令界面:
runmqsc 或者 runmqsc to.queue.manager
会显示一条消息通知您已经启动MQSC会话。

出现以上提示后,表示进入了MQSC的交互管理界面,MQ SC没有命令提示符,此时,管理员可以对该队列管理器进行相关的命令方式的管理了。

(5)通过输入以下命令来建立名为MYRECEIVER.QUEUE的本地队列:
define qlocal(myreceiver.queue)
请注意,MQSC中输入的所有小写字符都会自动转换为大写,所以其实我们建立的本地队列是大写的M YRECEIVER.QUEUE。

建立完毕后,如下图,会显示一条消息通知您已经创建队列:
(6)通过输入以下命令来停止MQSC:
end
从MQSC会话退出回到shell中。

(7)现在,我们已经定义了:
名为 to.queue.manager的缺省队列管理器
名为 MYRECEIVER.QUEUE的队列
6.3 测试本地安装的具体步骤
下面开始测试MQ的本地安装。

要测试队列管理器和队列,可以使用amqsput样本程序将消息放入队列,使用amqsget样本程序从队列取回消息。

具体步骤如下:
(1)请先确保正确设置了mq的环境变量,队列管理器处于正在运行的状态,并检查使用组mqm中的用户登录到shell中。

我们可以使用下列命令将消息放入此队列:
amqsput MYRECEIVER.QUEUE 或者 amqsput MYRECEIVER.QUEUE to.queue.manager
请注意,如果队列属于缺省的队列管理器中,可以不用指定队列管理器。

为避免出错,建议手工指定。

在一行或多行中输入一些消息文本,后跟一行空白行,消息输入即可完成并结束。

(2)在未放入消息之前,队列的深度curdepth应该是0的,现在放入了一条消息,队列深度将会变为1。

为了验证这个想法,我们可以重回到MQSC会话中,使用下述命令查询出队列深度为1的,且是以MY开头的本地队列,果然curdepth是为1,说明消息输入成功:
再输入完整的queue名字进行显示:
(3)从本地队列中取出消息,我们可以输入下述命令: amqsget MYRECEIVER.QUEUE to.queue.manager 如下图,我们看到成功地从队列中取出了消息!
现在,我们已经成功地验证了本地安装。

七、MQ的服务器到服务器安装
7.1 任务概述
承接上文,我们已经创建好了接收方的队列管理器to.queue.manager和其上的队列MYRECEIVER.QUEU E,现在我们仍需要继续发送方的队列管理器from.queue.manager和其上的远程队列、传输队列,发送方通道等,并需要回到接收方队列管理器中创建接收通道和Listener。

我们将在同一部机器上完成这些操作,当然,如果你有条件,可以跨机器实践,并保证机器间的通信链路是畅通的。

7.2 定义配置的具体步骤
(1)作为mqm组中的用户登录到shell后,我们创建名为from.queue.manager的发送方队列管理器:
crtmqm from.queue.manager
(2)队列管理器创建完成后,我们将其启动:
strmqm from.queue.manager
(3)启动MQSC会话,并定义一条名为MYTRANSMIT.QUEUE的本地队列,该队列将会被用作传输队列,所以该本地队列的usage参数将会被定义为xmitq:
runmqsc from.queue.manager
define qlocal(mytransmit.queue) usage(xmitq)
(4)通过输入下列命令来定义远程队列的本地定义:
define qremote(mysender.queue) rname(myreceiver.queue) rqmname(‘’) xm
itq(mytransmit.queue)
(5)远程队列定义完成后,我们可以使用如下命令查看其详细配置项信息:
display qremote(mysender.queue)
请注意这里,rqmname项括号里的是小写的接收方队列管理器的名字,不知道你有没有注意到我们在远程队列的define语句中使用了单引号呢?咔咔,功效就在这里,不然待会测试就会会出错了。

(6)通过输入下列命令来定义发送方通道:
define channel(from.to.channel) chltype(sdr) conname(‘127.0.0.1(1416)’) xmitq(mytr ansmit.queue) trptype(tcp)
注意,conname定义的是接收方所在机器的ip和Listener端口,如果不写端口则默认为1414,为避免防止端口冲突,建议自己定义一个未用的端口。

(7)此时,我们再次回到接收方队列管理器的MQSC会话中,通过输入以下命令来定义接收方的接听器: define listener(myreceiver.listener) trptype(tcp) control(qmgr) port(1416) 其中,port项定义的端口必须与我们刚才在发送方通道定义时候所使用的端口号相同。

(8)接收方的Listener建立完成后,我们通过输入以下命令建立接收方通道:
define channel(from.to.queue) chltype(rcvr) trptype(tcp)
请注意,接收方通道的名字需要和发送方通道的名字定义为一样。

(9)好了,到现在为止,我们定义了以下对象:
from.queue.manager 发送方队列管理器
MYSENDER.QUEUE 远程队列
MYTRANSMIT.QUEUE 传输队列
FROM.TO.CHANNEL 发送方传输通道
以及
MYRECEIVER.LISTENER 接收方Listener
FROM.TO.CHANNEL接收方传输通道
至此,我们已经完成了服务器方式的安装配置。

下面我们即将开始测试。

7.3测试服务器到服务器安装的具体步骤
测试之前,需要启动发送方的通道和接收方的Listener。

需要注意的是,发送方不需要Listener,接收方的通道不需要手工启动,在发送方通道启动成功后,接收方通道会自动启动。

(1)进入发送方的MQSC会话,使用如下命令启动发送方通道:
start channel(from.to.channel)
消息提示通道启动完成后,我们可以使用如下命令查看通道的状态,如下图所示,发送方的状态stat us是running:
display chstatus(from.to.channel)
(2)进入接收方的MQSC会话,使用如下命令启动Listener:
start listener(myreceiver.listener)
消息提示Listener启动完成后,我们可以使用如下命令查看Listener的状态,如下图所示,Listen er的状态status是running:
display lsstatus(myreceiver.listener)
(3)我们退出MQSC会话,使用如下命令可以知道1416端口正在监听:
netstat –an | grep –i listen | grep –i 1416
如上文所述,接收方通道不需要手工启动,在发送方通道启动后会自动启动,我们可以通过如下命令查看接收方通道的运行状态,如下图所示,接收方通道的状态status也变成是running:
(4)万事俱备,只欠东风!下面我们依然使用amqsput和amqsget命令对服务器安装配置的架构进行测试。

使用如下命令往接收方队列管理器的远程队列中输入消息,:
amqsput MYSENDER.QUEUE from.queue.manager
(5)消息输入完成后,我们可以回到MQSC会话中使用下述命令查询出传输队列当前深度curdepth为1:
(6)接着,我们从接收方的本地队列中取出消息,我们可以输入下述命令:
amqsget MYRECEIVER.QUEUE to.queue.manager
如下图,我们看到成功地从队列中取出了消息!
消息从远程队列经过传输队列和传输通道后,传送到了接收方的本地队列中!
(7)最后,完成测试后,我们可以使用如下命令停止队列管理器:
endmqm -i from.queue.manager
endmqm -i to.queue.manager
八、总结
至此,不知道您是否已经对于WebSphere MQ的基本知识已经有了较好的理解了呢?
咔咔,不妨拿掉书本,再次动手,靠记忆默念地实践多一次,那样您就牢牢地掌握这些基本操作了!。

相关文档
最新文档