WebSphereMQ一小时快速入门_第1页
WebSphereMQ一小时快速入门_第2页
WebSphereMQ一小时快速入门_第3页
WebSphereMQ一小时快速入门_第4页
WebSphereMQ一小时快速入门_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

WebSphereMQ一小时快速入门

一、什么是中间件

中间件是处于应用软件和系统软件之间的通用服务,是一类以自己的豆杂换取企业应用简单化的可

复用的基础软件。

中间件主要分为消息中间件、应用服务器中间件、交易中间件等等。而今天,笔者晓奕主要向大家

介绍的正足IBM厂商的消息中间件WebSphereMQ»

二、WebSphereMQ简介

WebsphereMQ是IBM口勺商业消息通讯中间件(CommercialMessagingMiddleware)<>

WebsphereMQ提供一个具有工业标准、安全、可靠的消息传输系统。它可实施在广泛的IBM和非I

BM平台上,它的功能是控制和管理一个集成的商业应用,使得组成这个商业应用的多个分支程序(模块)之

间通过传递消息完成整个工作流程。通过使用WebSphereMQ用户可以简单方便的开发出可靠、高效的分布

式应用系统。

三、WebSphereMQ主要对象

消总是对使用它的应月程序有意义的以字节为单位的字符串。消息可以用来实现在相同或不同平台

上应用程序间的通信。

双网是用于存储消息的数据结构。按功能可以分为本地队列、远程队列、传输队列、模板队列、别

名队列、死信队列等等。

队列管理器依WebSphereMQ中队列管理器是基本的软件系统,队列管理器可看成是队列和其他对

象的容器。

逋道是一种提供从一人队列管理器到另一个队列管理器的通信路径。它乂叫消息通道,用在分布式

的队列把消息从个队列管理器发送到另一个队列管理器。按照定义可以分为发送通道(Sender)、接收通

道(Receiver)、服务器通道(Server)、请求器通道(Requester)等。

留%卷令是用来管理队列管理器对象,包拈队列管理器本身、通道、队列和进程定义。可以使用

runmqsc向队列管理器发出MQSC命令。

四、WebSphereMQ体系结构

System

队列管理器

WebSphereMQ的体系结构如图所示,它是由许多对象所组成的,主要包括队列管理器、队列、通

道、进程定义等对象。队列管理器和DB2数据库中的实例相似,队列管理器好比走数据库实例,队列好比

是数据库中的数据表,而消息就好似数据表中的某一行数据。

五、本文的任务目标

本文完整的演示了WebSphereMQ的两个最常用的任务。

5.1建立和验证一个队列管埋器和一个队列的本地安装:

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

六、MQ的本地安装:

注意:WebSphereYQ对象定义是区分大小写的。如果您是使用VQSC命令以小写方式输入的任何文

本会自动转换成大写,除非用单引号将他们引起来。所以请您对照以下例子进行操作的时候,请注意大小

写和单引号的使用,以免影响学习效果。

6.1任务概述:

使用MQSC命令方式建立队列管理器to.queue.manager,同时创建MYRECEIVER.QUEUE队列,并测

试往队列中放入和读取消息。

6.2定义配置的具体步骤:

(1)作为mqm组中的用户登录到shell中;

通过输入以下命令创建名为to.queue,manager的队列管理器,-q参数是指创建为缺省的队列管理

器;

crtmqm-qto.queue,manager

[faye®/cygdrive/d]#crtjhqm-qto.queue,manager

WebSphereMQ队列管理器已创建。

创建或替换to.queue.manager的缺省对象。

缺省对象统计:61个己创建。0个已替换。0个己失败。

正在完成设置。

设置完成。

I[faye®/cygdrive/d]#

命令过程中你将会见到提示信息,它们通知您已经创建了队列管理器并且已经创建缺省的WebSphe

reMQ对象。

(2)查看队列管理器是否已经建立成功,请使用dspmq命令:

dspmq

[faye@/cygdrive/d]#dspmq

QMNAME(here,queue,manager)STATUS(已立即结束)

QMNAME(there,queue,manager)STATUS(已立即结束)

QMNAME(to.queue,manager)STATUS(己立即结束)

I[faye®/cygdrive/d],

该命令是用来显示系统中存在的队列管理器,如上图所示,to.queue.manager已经建立成功,并

处于未运行的状态。

(3)要启动队列管理器,请输入:

strmqm或者strmqmto.queue,manager

strmqm后不加参数,表示启动缺省的队列管理器,为避免启错对象,建议指定队列管理器来启动:

[faye@/cygdrive/d]#strmqmto.queue,manager

WebSphereMQ队列管理器ato.queue,managerw正在后动。

在日志重放阶段在队列管理器"to.queue.manager"上访问了5条日志记录。

完成队列管理嘉44to.queue.manager"的日志重放。

为队列管理器七0・口混戊・航6驾”“恢复了事务管理器状态。

WebSphereMQ队列管理器4to.queue,manager已启动o

[fcvwdrive/d]玄

提示队列管理器已经后动成功,管理员可以继续使用dspna命令产看队列管理器的状态如下:

[faye®/cygdrive/d]#dspmq

QMNAME(here,queue,manager)STATUS(已立即结束)

QMNAME(there,queue,manager)STATUS(已立即结束)

QMNAME(to.queue.manager)STATUS(正在运行)

I[faye®/cygdrive/d]M

(4)通过输入下述命令来启月MQSC命令界面:

runmqsc或者runmqscto.queue,manager

[faye@/cygdrive/d]#runmqscto.queue,manager

5724-H72(C)CopyrightIBMCorp.1994,2008.ALLRIGHTSRESERVED.

启动队列管理器to.queue,manager的MQSC0

会显示一条消息通知您已经启动VQSC会话。出现以上提示后,表示进入了MQSC的交互管理界面,

MQSC没有命令提示符,此时,管理员可以对该队列管理器进行相关的命令方式的管理了。

(5)通过输入以下命令来建立名为MYRECEIVER.QUEUE的本地队列:

defineqlocal(myrcceiver.queue)

请注意,MQSC中输入的所有小写字符都会自动转换为大写,所以其实我们建立的本地队列是大写

的MYRECEIVER.QUEUE。建立完毕后,如下图,会显示一条消息通知您已经创建队列:

defineqlocal(myreceiver.queue)

1:defir.eqlocal(myreceiver.queue)

AMQ8006:WebSphereMQ队列已创建。

(6)通过输入以下命令来停止MQSC:

end

end

*.

2:end

读取一个MQSC命令。

所有命令均无语法错误。

己处理所有的有效MQSC命令。

[fayeO/cygdrive/d]

从MQSC会话退出回到shell中。

(7)现在,我们已经定义了:

名为to.queue.manager的缺省队列管理器

名为VYRECEIVER.QU印E的队列

6.3测试本地安装的具体步骤

下面开始测试MQ的本地安装。

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

队列取回消息具体步骤如下:

(1)请先确保正确设置了mq的环境变量,队列管理器处于正在运行的状态,并检查使用组mqm中的用户

登录到shell中。

我们可以使用卜列命令将消息放入此队列:

amqsputMYRECEIVER.QUEUE或者amqsputMYRECEIVER.QUEUEto.queue,manager

D:\>ainqsputMYRECEIUER.QUEUEto.queue.manager

SampleAMQSPUT0start

targetqueueisMVRECEIUER.QUEUE

Hello,it'smyFirstMQMessage.

SampleAMQSPUT0end

D2

请注意,如果队列属于缺省的队列管理器中,可以不用指定队列管理器。为避免出错,建议手工指

定。

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

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

为了验证这个想法,我们可以重回到MQSC会话中,(支用下述命令查询出队列深度为1的,

且是以MY开头的本地队列,臭然curdcpth是为1,说明消息输入成功:

displayqlocal(my*)where(curdeptheq1)

4:displayqlocal(my*)where(curdeptheq1)

AMQ8409:显示队列细节。

QUEUE(MYRECEIVER.QUEUE)TYPE(QLOCAL)

CURDEPTH(l)

再输入完整的queue名字进行显示:

displayqlocal(nyreceiver.queue)

■*

*■

5:displayqlocal(myreceiver.queue)

AMQ8409:显示队列细节。

QUEUE(MYRECEIVER.QUEUE)TYPE(QLOCAL)

ACCTQ(QMGR)ALTDATE(2010-03-06)

ALTTIME(17.04.50)BOQNAME()

BOTHRESH(O)CLUSNL()

CLUSTER()CLWLPRTY(O)

CLWLRANK(0)CLFLUSEQ(QMGR)

CRDATE(2010-03-06)CRTIME(17.04.50)

CURDEPTH(l)DEFBIND(OPEN)

DEFPRTY(O)DEFPSIST(NO)

DEFPRESP(SYNC)DEFREADA(NO)

DEFSOPT(SHARED)DEFTYPE(PREDEFINED)

DESCR()DISTL(NO)

GET(ENABLED)HARDENBO

INITQ()IPPROCS(O)

MAXDEPTH(5000)MAXMSGL(4194304)

MONQ(QMGR)MSGDLVSQ(PRIORITY)

NOTRIGGERNPMCLASS(NORMAL)

OPPROCS(0)PROCESS()

PUT(ENABLED)PROPCTL(COMPAT)

QDEPTHHI(80)QDEPTHLOC20)

QDPHIEV(DISABLED)QDPLOEV(DISABLED)

QDPMAXEV(ENABLED)QSVCIEV(NONE)

QSVCINT(999999999)RETINTVL(999999999)

SCOPE(QMGR)SHARE

STATQ(QMGR)TRIGDATA()

TRIGDPTH(l)TRIGMPRI(0)

TRIGTYPE(FIRST)USAGE(NORMAL)

(3)从本地队列中取出消息,我们可以输入下述命令:

amqsgctMYRECEIVER.QUEUEto.queue.manager

如下图,我们看到成功地从队列中取出了消息!

D:\>

D:\>anqsgetMYRECEIUER.QUEUEto.queue.manager

SampleAMQSGET0start

message<Hello,it*smyfirstMQMessage.>

__________________________________________________

现在,我们已经成功地验证了本地安装。

七、MQ的服务器到服务器安装

7.1任务概述

承接上文,我们已经创建好了接收方的队列管理器to.queue,manager和其上的队列MYRECEIVER.Q

UEUE,现在我们仍需要继续发送方的队列管理器from,queue,manager和其上的远程队列、传输队列,发送

方通道等,并霜要回到接收方队列管理器中创建接收通道和Listener。我们将在同一部机器上完成这些操

作,当然,如果你有条件,可以跨机器实践,并保证机器间的通信链路是畅通的。

7.2定义配置的具体步骤

(1)作为mqm组中的用户登录到shel1后,我们创建名为from.queue.manager的发送方队列管理器:

crtmqmfrom,queue,manager

(faye@/cygdrive/d]#crtmqmfrom,queue,nanager

WebSphereMQ队列管理器已创建。

创建或替换from.queue,manager的缺省对象。

缺省对象统计:61个已创建。0个已替换。0个已失败。

正在完成设置。

设置完成。

[faye@/cy&drive/d]#

(2)队列管理器创建完成后,我们将其启动:

strmqmfrom,queue,manager

[faye@/cygdrive/d]#strmqmfrom,queue,manager

VebSphereMQ队列管理器wfrojn.queue,managerM正在启动。

在日志重放阶段在队列管理器“from,queue.manager”上访问了5条日志记录。

完成队列管理器“from,queue.manager”的日志重放。

为队列管理器“from,queue,manager”恢复了事务管理器状态。

WebSphereMQ队列管理器*fron.queue,manager,己信动。

[faye"cygdrive/d]*

(3)启动MQSC会话,并定义一条名为MYTRANSMIT.QUEUE的本地队列,该队列将会被用作传输队列,所以

该本地队列的usage参数将会被定义为xmitq:

runmqscfrom,queue.manager

defineqlocal(mytransmit.queue)usage(xmitq)

defineqlocal(mytransmit.queue)usage(xmitq)

1:defineqlocal(mytransmit.queue)usage(xmitq)

AMQHCID6:WebSphereMQ队列已创建。

(4)通过输入下列命令来定义远程队列的本地定义:

defineqremote(mysender.queue)rname(myreceiver.queue)rqmname(4to.queue,nam

e')xmitq(mytransmit.queue)

defineqreBiote(»ysender.queue)rnajne(myreceiver.queue)rqinaieCto.queue.manager')xmitq(mytrans>it・queue)

3:defineqre>ote(Bysender.queue)rname(myreceiver.queue)rqjnnajiie(,to.queue,manager')xMitq(»ytrans»it.queue)

AMQ8006:WebSphereIQ队罚己创建。

(5)远程队列定义完成后,我们可以使用如下命令查看其详细配置项信息:

displayqremote(mysender.queue)

displayqremote(mysender.queue)

4:displayqrftiuntR(myjjftndftr.quftiift)

AHQ8409:显示队列细节。

QUEUE(MYSENDER.QUEUE)TYPE(QREMOTE)

ALTDATE(2010-03-06)ALTTIME(18.16.38)

CLUSNL()CLUSTER()

CLWLPRTY(O)CLWLRANK(0)

DEFBIND(OPEN)DEFPRTY(O)

DEFPSIST(NO)DEFPRESP(SYNC)

DESCR()PUT(ENABLED)

RQMNAME(to.queue,manager)RNAME(MYRECEIVER.QUEUE)

SCOPE(QMGR)XMITQ(MYTRANSMIT.QUEUE)

请注意这里,rqmname项括号里的是小写的接收方队列管理器的名字,不知道你有没有注意到我们

在远程队列的define语句中使用了单引号呢?咔咔,功效就在这里,不然待会测试就会会出错了。

(6)通过输入卜列命令来定义发送方通道:

definechannel(fn)m.to.channel)chitype(stir)conname(,127.0.0.1(1416)?)xmi

tq(mytransmit,queue)trptypc(tcp)

definechannel(myfirst.channel)chitype(sdr)conname127.0.0.1(1416)J)xmitq(]nytransniit.queue)trptype(tcp)

5:definechannel(xyfirst.channel)chitype(sdr)connaaeC127・0・0・1(1416)')xmitq(mytransmit.queue)trpt

AHQ8014:WebSphere胤通道己创建。

注意,conname定义的站接收方所在机器的ip和Listener端口,如果不写端口则默认为1414,为

避免防止端口冲突,建议自己定义一个未用的端口。

(7)此时,我们再次回到接收方队列管理器的MQSC会话中,通过输入以下命令来定义接收方的接听器:

definelistener(m)rreceiver.listener)trptype(tcp)conti'ol(qmgr)port(1416)

其中,port项定义的端口必须与我们刚才在发送方通道定义时候所使用的端口号相同。

definelistener(myreceiver.listener)trptype(tcp)port(1416)control(qmgr)

2:definelistener(myreceiver.listener)trptype(tcp)port(1416)control(qmgr)

AMQ8626:WebSphereMQ侦听器已创建。

(8)接收方的Listener建立完成后,我们通过输入以下命令建立接收方通道:

definechannel(from.to.queue)chitype(rcvr)trptype(tcp)

请注意,接收方通道的名字需要和发送方通道的名字定义为一样。

definechannel(myfirst.channel)chitype(rcvr)trptype(tcp)

6:definechannel(myfirst.channel)chitype(rcvr)trptype(tcp)

AMQ8014:WebSphereMQ通道已创建。

(9)好了,到现在为止,我们定义了以下对象:

from,queue,manager发送方队列管理器

MYSENDER.QUEUE远程队列

MYTRANSMIT.QUEUE传输队列

FROM.TO.CHANNEL发送方传输通道

以及

MYRECEIVER.LISTENER接收方Listener

FROM.TO.CHANNEL接收方传输通道

至此,我们已经完成.‘服务器方式的安装配置。

下面我们即将开始测试。

7.3测试服务器到服务器安装的具体步骤

测试之前,需要启动发送方的通道和接收方的Listener。需要注意的是,发送方不需要Listener,

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

(1)进入发送方的MQSC会话,使用如下命令启动发送方通道:

startchannel(from.to.channel)

startchanne1(myfirst.channe1)

1startchanne1(myfirst.channe1)

AMQ8018启动WebSphereMQ通道已接受。

消息提示通道启动完成后,我们可以使用如下命令查看通道的状态,如下图所示,发送方的状态$

tatus是running:

displaychstatus(from.to.channel)

displaychstatus(myfirst.channe1)

2disp1aychstatus(myfirst.channe1)

AMQ8417显示通道状态细节。

CHANNEL(MYFIRST.CHANNEL)CHLTYPE(SDR)

CONNAME(127.0・0.1(1416))CURRENT

RQMNAME(to.queue,manager)STATUS(RUNNING)

SUBSTATE(MQGET)XMITQ(MYTRANSMIT.QUEUE)

(2)进入接收方的MQSC会话,使用如下命令启动Listener:

start1istener(myreceiver.listener)

startlistener(myreceiver.listener)

10startlistener(myreceiver.listener)

AJKi8021己接受启动WebSphere即侦听器的请求。

消息提示Listener启动完成后,我们可以使用如下命令查看Listener的状态,如下图所示,Lis

tener的状态status是running:

display1sstatus(myrecciver.listener)

displayIsstatus(nyreceiver.listener)

1displayIsstatus(myreceiver.listener)

AMQ8631显示侦听器状态详细信息。

LISTENER(MYRECEIVER.LISTENER)STATUS(RUNNI1K)

PID(8332)STARTDA(2010-03-06)

STARTTK18.24.48)DESCR()

TRPTYPE(TCF)CONTROL(QMGR)

IPADDR(*)PORT(1416)

BACKLOG(100)

(3)我们退出MQSC会话,使用如下命令可以知道1416端口正在监听:

netstat-angrep-ilistengrep-i1416

[faye®/cygdrive/d]t

[faye画cygdrive/d]#netstat-an|grep-ilisten|grep-i1416

TCP0.0.0.0:14160.0.0.0:0LISTENING

如上文所述,接收方通道不需要手工启动,在发送方通道启动后会自动启动,我们可以通过如下命

令查看接收方通道的运行状态,如下图所示,接收方通道的状态slalus也变成是running:

disp1aychstatus(inyfirst.channe1)

2:displaychstatus(myfirst.channel)

AMQ8417:显示通道状态细节。

CHANNEL(MYFIRST.CHANNEL)CHLTYPE(RCVR)

CONNAME(127.0.0.1)CURRENT

RQMNAME(frcai.queue,manager)STATUS(RUNNING)

SUBSTATE(RECEIVE)

(4)万事俱备,只欠东风!下面我们依然使用amqspul和amqsgct命令对服务器安装配置的架构进行测试。

使用如下命令往接收方队列管理粥的远程队列中输入消息.:

amqsputMYSENDER.QUEUEfrom,queue.manager

ED:\>amqsputMVSENDER.QUEUEfron.queue.manager

hanpleAMQSPUT0start

targetqueueisMYSENDER.QUEUE

Hello,testmyMQ?

hanpleAMQSPUT0end

(5)消息输入完成后,我们可以回到MQSC会话中使用下述命令查询出传输队列当前深度curdcpth为1:

displayqlocal(myreceiver.queue)

2:displayqlocal(myreceiver.queue)

AMQ8409:显示队列细节。

QUEUE(MYRECEIVER.QUEUE)TYPE(QLOCAL)

ACCTQ(QNGR)ALTDATE(2010-03-06)

ALTTIME(17.04.50)BOQNAME()

BOTHRESH(O)CLUSNL()

CLUSTER()CLWLPRTY(O)

CLWLRANK(0)CLWLUSEQ(QMGR)

CRDATE(2010-03-06)CRTIME(17.04.50)

CURDEPTH(l)DEFBIND(OPEN)

DEFPRTY(O)DEFPSIST(NO)

DEFPRESP(SYNC)DEFREADA(NO)

DEFSOPT(SHARED)DEFTYPE(PREDEFINE

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论