安装和使用 IBM WebSphere MQ for Linux

导读:
  未显示需要 JavaScript 的文档选项
  级别: 初级
  Ian Shields, 高级程序员, IBM 
  Clifford Spinac(spinac@us.ibm.com), 电子商务架构设计师, IBM 
  2002 年 11 月 01 日
  本文演示了如何安装和使用 IBM WebSphere MQ(前称是 MQSeries)。本文的第一部分帮助您从 IBM WebSphere MQ Open Beta Program 下载和安装 IBM WebSphere MQ。第二部分帮助您创建 MQ 队列,用 MQ 命令处理那些队列,以及用 MQ 样本程序处理 MQ 消息。有关的问题、评论或帮助信息,请访问我们的 技术支持论坛。
  通过允许跨不同平台的信息交换,通过确保“一次且仅一次”的消息传递,通过处理通信协议,通过在可用资源中动态分布工作负载,通过在系统出现问题后进行恢复,以及通过帮助使程序变得可移植,IBM WebSphere MQ 支持应用程序集成。
  开始之前
  您将需要大约 120 MB 的临时空间来下载 WebSphere MQ beta 测试版代码,另需大约 135 MB 临时空间来抽取那些安装 rpm。本文描述的服务器、客户机和样本程序需要 /opt/mqm 中有大约 40 MB 的空间。
  刚接触 Linux?如果您刚接触 Linux 并且在登录和注销、挂装 CD-ROM 或打开终端窗口方面需要帮助,请参阅“ 针对 Linux 开发新手的基本任务”,这篇文章介绍了这些任务及其它更多任务。
  安装 IBM WebSphere MQ for Linux
  请阅读 WebSphere MQ V5.3 Beta 测试版的产品信息(Product Information)、系统需求(System Requirement)和限制(Limitation),然后向下滚动屏幕至注册和下载(Registration and Download)部分。单击该链接以下载 Beta 测试版代码和文档。
  在下一页面上,选择 WebSphere MQ Open Beta for the Linux/Intel platform。单击 Continue 按钮。在下一页面上,选择“I have not registered before”链接以注册 WebSphere MQ Open Beta。输入适当的注册信息,然后单击 Accept 按钮以接受测试版许可证(Beta License)。
  在下一页面上,将“WebSphere MQ for Linux on Intel V5.3 Open Beta: WMQlinux53beta2.tar.gz”文件下载至临时目录。这一 tar.gz 文件包含 MQ 服务器、客户机、运行时、SDK 和样本程序的软件包。
  此时,您可能还希望下载文档文件 WebSphere MQ for Linux on Intel V5.3 Quick Beginnings、 WebSphere MQ V5.3 Information Center和 WebSphere MQ V5.3 Documentation(HTML)。其它文档、文章、书籍和教程可从 WebSphere MQ 系列书库获得。
  从下载的 tar.gz 文件所在临时目录抽取并解压缩 WebSphere MQ for Linux 软件包:
  
[root@echidna root]# tar -xzvf WMQlinux53beta2.tar.gz
  这将创建一个名为 linuxbeta 的目录。使用 cd命令转至该目录:
  
[root@echidna root]# cd linuxbeta
  要安装 WebSphere MQ 软件包,首先要运行 MQ 许可证程序:
  
[root@echidna linuxbeta]# ./mqlicense.sh
  一个 Java 许可证程序将启动并在图形窗口中显示许可证协议。阅读了许可证之后,请单击 Accept 按钮以接受软件许可证协议(Software License Agreement)。
  安装 WebSphere MQ for Linux 服务器(Runtime、SDK 和 Server 软件包):
  
[root@echidna linuxbeta]# rpm -U MQSeriesRuntime-5.3.0-1.i386.rpm
[root@echidna linuxbeta]# rpm -U MQSeriesSDK-5.3.0-1.i386.rpm
[root@echidna linuxbeta]# rpm -U MQSeriesServer-5.3.0-1.i386.rpm
  提示:如果您有三键鼠标(或者您将鼠标设置为通过协调两个按键 ― 也就是说,同时按下两个按键 ― 来模拟三键鼠标),您就可以按下左键并拖动鼠标选中某个窗口中的文本,然后用中间的按键(或在两键鼠标上同时按两个按键)将突出显示的文本粘贴到命令的余下部分。您可以在一个窗口或多个窗口之间使用这个方便的窍门。使用这个窍门可以节省输入这些长文件名的时间,首先使用 ls命令显示文件名的列表,然后简单地输入后面带有一个空格的 rpm -U,接着突出显示软件包名称,并用按键 3 粘贴它就可以了我们在 图 1中说明了这一突出显示过程。
  图 1. 安装 WebSphere MQ RPM
  
  
  安装 WebSphere MQ for Linux 客户机(注:安装服务器时我们已经安装了 Runtime 软件包):
  
[root@echidna linuxbeta]# rpm -U MQSeriesClient-5.3.0-1.i386.rpm
  安装 WebSphere MQ 样本程序(其中包括 amqsput、amqsget、amqsgbr 和 amqsbcg 等):
  
[root@echidna linuxbeta]# rpm -U MQSeriesSamples-5.3.0-1.i386.rpm
  这个命令把 WebSphere MQ 样本程序安装在 /opt/mqm/samp/bin 中。它还将在 /opt/mqm/samp 中安装这些样本程序的 C 和 CPP 源文件。您可以打开这些样本程序的一些源文件(如 amqsput.c),以了解如何使用 MQ API(MQI)。
  安装过程创建了一个名为 mqm的用户和一个同样名为 mqm的组。此时,新用户是被锁定的,您必须设置一个密码来解锁,这样才能继续本文的第二部分。可用 passwd命令做到这一点:
  
[root@echidna linuxbeta]# passwd mqm
  将提示您输入用于 mqm的新密码并随后确认它。
  提示:如果您已经有 Linux 方面的经验,并且更愿意用一个现有的用户来管理 WebSphere MQ,那么可以通过将该用户添加到 mqm组来做到这一点。
  运行 WebSphere MQ for Linux
  在开始这一节之前,请确保象前一节末尾所描述的那样,对 WebSphere MQ 安装程序为您创建的新用户 mqm设置了密码。
  1. 以用户 mqm的身份登录。
  2. 使用 crtmqm命令来创建一个名为 QM1 的队列管理器。我们把它作为缺省队列,并且将不在创建时指定死信队列。然后使用 strmqm命令启动队列管理器。
  清单 1. 创建和启动队列管理器 QM1
  
[mqm@echidna mqm]$ crtmqm -q QM1
There are 34 days left in the beta test period for this copy of WebSphere MQ.
WebSphere MQ queue manager created.
Creating or replacing default objects for QM1.
Default objects statistics : 31 created. 0 replaced. 0 failed.
Completing setup.
Setup completed.
[mqm@echidna mqm]$ strmqm QM1
There are 34 days left in the beta test period for this copy of WebSphere MQ.
Purchased processor allowance not set (use setmqcap).
WebSphere MQ queue manager ''QM1'' started.
[mqm@echidna mqm]$
  3. 创建名为 ex1input.txt 的 WebSphere MQ 命令文件。将用于创建名为 Q1 的本地队列(最大深度是 10 条消息)的命令输入到这个命令文件中。创建 Q1 的别名,名为 AQ1。然后创建一个名为 Q2 的本地队列,它有和 Q1 相同的属性:
  [mqm@echidna mqm]$ gedit ex1input.txt (you can also use vi, emacs, pico, or kwrite)
  单击 Yes 创建新文件(因为它还不存在)。可以使用缩写的命令,如用 def ql代表 define qlocal。将下面几行输入到文件中:
  
def ql(Q1) maxdepth(10)
def qalias(AQ1) targq(Q1)
def ql(Q2) like(Q1)
  如果使用 gedit,则您的编辑窗口看起来应和 图 2相似:
  图 2. 编辑 WebSphere MQ 命令文件

-
-
 
  
  通过单击 Save 按钮保存文件,然后单击 Exit 按钮结束。
  4. 运行 WebSphere MQ 命令应用程序 runmqsc,使用刚刚创建的 WebSphere MQ 命令文件作为输入。请注意重定向运算符(<),它将标准输入重定向为您的文件:
  清单 2. 使用 runmqsc 创建队列
  
[mqm@echidna mqm]$ runmqsc 5724-B41 (C) Copyright IBM Corp. 1994, 2002. ALL RIGHTS RESERVED.
Starting MQSC for queue manager .
1 : def ql(Q1) maxdepth(10)
AMQ8006: WebSphere MQ queue created.
2 : def qalias(AQ1) targq(Q1)
AMQ8006: WebSphere MQ queue created.
3 : def ql(Q2) like(Q1)
AMQ8006: WebSphere MQ queue created.
3 MQSC commands read.
No commands have a syntax error.
All valid MQSC commands were processed.
[mqm@echidna mqm]$
  5. 启动 WebSphere MQ 命令应用程序 runmqsc来处理作为标准输入而输入的 WebSphere MQ 命令。Q1 的所有属性显示如下:
  清单 3. 显示 Q1 的详细信息
  
[mqm@echidna mqm]$ runmqsc
5724-B41 (C) Copyright IBM Corp. 1994, 2002. ALL RIGHTS RESERVED.
Starting MQSC for queue manager .
dis q(Q1)
1 : dis q(Q1)
AMQ8409: Display Queue details.
DESCR( ) PROCESS( )
BOQNAME( ) INITQ( )
TRIGDATA( ) CLUSTER( )
CLUSNL( ) QUEUE(Q1)
CRDATE(2002-10-31) CRTIME(11.50.04)
ALTDATE(2002-10-31) ALTTIME(11.50.04)
GET(ENABLED) PUT(ENABLED)
DEFPRTY(0) DEFPSIST(NO)
MAXDEPTH(10) MAXMSGL(4194304)
BOTHRESH(0) SHARE
DEFSOPT(SHARED) HARDENBO
MSGDLVSQ(PRIORITY) RETINTVL(999999999)
USAGE(NORMAL) NOTRIGGER
TRIGTYPE(FIRST) TRIGDPTH(1)
TRIGMPRI(0) QDEPTHHI(80)
QDEPTHLO(20) QDPMAXEV(ENABLED)
QDPHIEV(DISABLED) QDPLOEV(DISABLED)
QSVCINT(999999999) QSVCIEV(NONE)
DISTL(NO) DEFTYPE(PREDEFINED)
TYPE(QLOCAL) SCOPE(QMGR)
DEFBIND(OPEN) IPPROCS(0)
OPPROCS(0) CURDEPTH(0)
  6. 现在显示队列管理器中的所有队列:
  清单 4. 列出队列管理器中的所有队列
  
2 : dis q(*)
AMQ8409: Display Queue details.
QUEUE(AQ1) TYPE(QALIAS)
AMQ8409: Display Queue details.
QUEUE(Q1) TYPE(QLOCAL)
AMQ8409: Display Queue details.
QUEUE(Q2) TYPE(QLOCAL)
AMQ8409: Display Queue details.
QUEUE(SYSTEM.ADMIN.CHANNEL.EVENT) TYPE(QLOCAL)
AMQ8409: Display Queue details.
QUEUE(SYSTEM.ADMIN.COMMAND.QUEUE) TYPE(QLOCAL)
AMQ8409: Display Queue details.
QUEUE(SYSTEM.ADMIN.PERFM.EVENT) TYPE(QLOCAL)
...
AMQ8409: Display Queue details.
QUEUE(SYSTEM.DEFAULT.INITIATION.QUEUE)
TYPE(QLOCAL)
AMQ8409: Display Queue details.
QUEUE(SYSTEM.DEFAULT.LOCAL.QUEUE) TYPE(QLOCAL)
AMQ8409: Display Queue details.
QUEUE(SYSTEM.DEFAULT.MODEL.QUEUE) TYPE(QMODEL)
AMQ8409: Display Queue details.
QUEUE(SYSTEM.DEFAULT.REMOTE.QUEUE) TYPE(QREMOTE)
AMQ8409: Display Queue details.
QUEUE(SYSTEM.MQSC.REPLY.QUEUE) TYPE(QMODEL)
AMQ8409: Display Queue details.
QUEUE(SYSTEM.PENDING.DATA.QUEUE) TYPE(QLOCAL)
  7. 最后,将队列管理器的死信队列更改为 SYSTEM.DEAD.LETTER.QUEUE,然后关闭命令应用程序。
  清单 5. 更改死信队列并关闭命令应用程序
  
alter qmgr deadq(SYSTEM.DEAD.LETTER.QUEUE)
4 : alter qmgr deadq(SYSTEM.DEAD.LETTER.QUEUE)
AMQ8005: WebSphere MQ queue manager changed.
end
5 : end
  8. 在接下来的几步中,我们将使用 WebSphere MQ 样本程序在队列上放置、获取和浏览消息。通过输入以下命令,将 WebSphere MQ 样本程序目录添加到 PATH:
  [mqm@echidna mqm]$ PATH=$PATH:/opt/mqm/samp/bin
  9. 使用 amqsput样本程序,将一个或多个消息放置到 Q1 上。在每个消息后按 Enter。若要终止,则按 Ctrl-d 以在标准输入上发出文件结束符信号:
  清单 6. 在 Q1 上放置消息
  
[mqm@echidna mqm]$ amqsput Q1
Sample AMQSPUT0 start
target queue is Q1
Hello Q1
Sample AMQSPUT0 end
  10. 使用 amqsput样本程序,浏览 Q1 以查看队列上的消息:
  清单 7. 浏览 Q1 上的消息
  
[mqm@echidna mqm]$ amqsgbr Q1
Sample AMQSGBR0 (browse) start
Messages for Q1
1 >no more messages
Sample AMQSGBR0 (browse) end
  11. 使用 amqsbcg样本程序,浏览 Q1 以查看队列上的消息及其消息描述符:
  清单 8. 浏览 Q1 上的消息和描述符
  
[mqm@echidna mqm]$ amqsbcg Q1
AMQSBCG0 - starts here
**********************

MQOPEN - ''Q1''


MQGET of message number 1
****Message descriptor****
StrucId : ''MD '' Version : 2
Report : 0 MsgType : 8
Expiry : -1 Feedback : 0
Encoding : 546 CodedCharSetId : 923
Format : ''MQSTR ''
Priority : 0 Persistence : 0
MsgId : X''414D5120514D312020202020202020203E81BD3D01030020''
CorrelId : X''000000000000000000000000000000000000000000000000''
BackoutCount : 0
ReplyToQ : '' ''
ReplyToQMgr : ''QM1 ''
** Identity Context
UserIdentifier : ''mqm ''
AccountingToken :
X''0335303500000000000000000000000000000000000000000000000000000006''
ApplIdentityData : '' ''
** Origin Context
PutApplType : ''6''
PutApplName : ''amqsput ''
PutDate : ''20021031'' PutTime : ''17053341''
ApplOriginData : '' ''
GroupId : X''000000000000000000000000000000000000000000000000''
MsgSeqNumber : ''1''
Offset : ''0''
MsgFlags : ''0''
OriginalLength : ''-1''

**** Message ****

length - 8 bytes

00000000: 4865 6C6C 6F20 5131 ''Hello Q1 ''

 

No more messages
MQCLOSE
MQDISC
  12. 使用 amqsget样本程序清除 Q1 上的消息:
  清单 9. 从 Q1 获取消息
  
[mqm@echidna mqm]$ amqsget Q1
Sample AMQSGET0 start
message
  amqsget程序将持续侦听队列上的新消息。用 Ctrl-c 终止它。也可以用 amqsgbr 代码来浏览 Q1 上的消息以确保没有遗漏。现在就试一下。
  13. 现在使用 amqsput命令将一个或多个消息放置到 AQ1(我们为 Q1 创建的别名)上。如有需要,可以回头参阅 清单 6。
  14. 使用 runmqsc,显示 Q1 的属性以确定队列上有多少消息(检查队列的 CURDEPTH):
  清单 10. 检查 Q1 的深度
  
[mqm@echidna mqm]$ runmqsc
5724-B41 (C) Copyright IBM Corp. 1994, 2002. ALL RIGHTS RESERVED.
Starting MQSC for queue manager .
dis q(Q1)
1 : dis q(Q1)
AMQ8409: Display Queue details.
DESCR( ) PROCESS( )
BOQNAME( ) INITQ( )
TRIGDATA( ) CLUSTER( )
CLUSNL( ) QUEUE(Q1)
CRDATE(2002-10-31) CRTIME(11.50.04)
ALTDATE(2002-10-31) ALTTIME(11.50.04)
GET(ENABLED) PUT(ENABLED)
DEFPRTY(0) DEFPSIST(NO)
MAXDEPTH(10) MAXMSGL(4194304)
BOTHRESH(0) SHARE
DEFSOPT(SHARED) HARDENBO
MSGDLVSQ(PRIORITY) RETINTVL(999999999)
USAGE(NORMAL) NOTRIGGER
TRIGTYPE(FIRST) TRIGDPTH(1)
TRIGMPRI(0) QDEPTHHI(80)
QDEPTHLO(20) QDPMAXEV(ENABLED)
QDPHIEV(DISABLED) QDPLOEV(DISABLED)
QSVCINT(999999999) QSVCIEV(NONE)
DISTL(NO) DEFTYPE(PREDEFINED)
TYPE(QLOCAL) SCOPE(QMGR)
DEFBIND(OPEN) IPPROCS(0)
OPPROCS(0) CURDEPTH(2)
  请记得输入 end以终止 runmqsc命令。
  15. 现在再次使用 amqsget来获得 Q 上的消息。如有需要,请回头参阅 清单 9。
  16. 现在执行禁用 Q2 上 PUT 函数的操作,使用 runmqsc:
  清单 11. 禁用 Q2 的 PUT 函数
  
[mqm@echidna mqm]$ runmqsc
5724-B41 (C) Copyright IBM Corp. 1994, 2002. ALL RIGHTS RESERVED.
Starting MQSC for queue manager .
alter ql(Q2) put(disabled)
1 : alter ql(Q2) put(disabled)
AMQ8008: WebSphere MQ queue changed.
  17. 现在试着将一个消息放置到 Q2 上以验证 PUT 已经被禁用:
  清单 12. 对 Q2 尝试 PUT
  
[mqm@echidna mqm]$ amqsput Q2
Sample AMQSPUT0 start
target queue is Q2
Hello Q2
MQPUT ended with reason code 2051
Sample AMQSPUT0 end
[mqm@echidna mqm]$
  这一命令会失败并且显示一个错误代码,因为 PUT 已经被禁用。
  18. 通过使用 runmqsc,删除 Q2:
  清单 11. 删除 Q2
  
[mqm@echidna mqm]$ runmqsc
5724-B41 (C) Copyright IBM Corp. 1994, 2002. ALL RIGHTS RESERVED.
Starting MQSC for queue manager .
delete qlocal(Q2)
1 : delete qlocal(Q2)
AMQ8007: WebSphere MQ queue deleted.
  19. 当您准备停止队列管理器时,可输入 endmqm QM1命令以常规方式终止,或输入 endmqm -i QM1立即终止。可以输入 dltmqm QM1命令来删除队列管理器。
  结束语
  祝贺您!您现在已经安装并使用了 WebSphere MQ for Linux 来创建和使用 WebSphere MQ 队列。有关本文中任务的问题、评论或帮助信息,请查看我们的 技术支持论坛。有关 WebSphere MQ 的更多信息,请参阅 WebSphere MQ 主页和 WebSphere MQ 书库。
  参考资料
  有关安装 Linux 的帮助信息,请选择与您的系统相匹配的文章:“ 安装 Red Hat Linux 7.1 的技巧”、“ 安装 Red Hat Linux 7.2 的技巧”或“ 安装 SuSE Linux 7.3 的技巧”。
  如果您刚接触 Linux,请查阅我们的“ 针对 Linux 开发新手的基本任务”。
  请访问 WebSphere MQ 系列主页。
  WebSphere MQ 系列书库有关于 WebSphere MQ 的手册、白皮书和其它信息。
  请回过头参阅 快速启动 Linux 应用以获得其它参考资料。
  作者简介
  Ian Shields目前在为 developerWorks Linux 专区研究 Linux 技术,他是 IBM 北卡罗来那州 Research Triangle Park 的一名高级程序员。他于 1973 年作为一名系统工程师加入 IBM 位于澳大利亚堪培拉的分公司,之后,在加拿大蒙特利尔和北卡罗来那州 RTP 从事通信系统和普及计算方面的工作。他拥有几项专利。他毕业于 Australian National University,本科学位是纯数学和哲学。他已经从北卡罗莱那州立大学获得了计算机科学硕士学位,现在,他正在那里攻读博士学位。您可以通过 ishields@us.ibm.com与 Ian 联系。
  Clifford Spinac是 IBM 得克萨斯州奥斯汀 Developer Relations 组织的一名电子商务架构设计师。他在 IBM 的 23 年职业生涯中担任过各种软件开发、设计和规划的职位,并且有 50 多项专利申请。在过去的三年中,他与软件开发人员和 Web 集成人员一同从事有关 IBM WebSphere Application Server、WebSphere Commerce Suite 和 Linux 中间件的技术咨询工作。您可以通过 spinac@us.ibm.com与 Cliff 联系。

本文转自
http://www.ibm.com/developerworks/cn/linux/linux-speed-start/l-ss-mq/

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值