一,说明
MQ基于Linux环境的安装比较简单,读者可以去网上自行搜索。
本文主要在于MQ队列管理器相关的部分。
OS Version: Red Hat Enterprise Linux Server release 6.7 (Santiago)
MQ Version: WebSphere MQ ?7.0.1.3
两台服务器分别安装MQ基础软件。
二,创建队列管理器
2.1 架构图:
上面这个图借鉴了某位仁兄的,我也不知道哪里来的了,只是以前存储在我自己的电脑里了。画得明白清晰。
我的两台OS IP地址分别为:192.168.88.7/192.168.88.9
队列管理器说明:
队列管理器QM1(192.168.88.7):TEST_QM 队列管理器QM2(192.168.88.9):TEST_RQM
2.2 创建命令:???????
队列管理器QM1:TEST_QM
队列名 | 队列属性 | ?命令 | DATA | 本地队列 | define qlocal(DATA) | REMOTE.DATA.R | 远程队列 | 指向队列:DATA.R?? 指向队列管理器:TEST_RQM define qremote(REMOTE.DATA.R) rname(DATA.R) rqmname(TEST_RQM) xmitq(TEST.R) | TEST.R | 传输队列 | define qlocal(TEST.R) usage(xmitq) | 创建对TEST_RQM的监听:define listener(DATA.LISTENER) trptype(tcp) control(qmgr) port(1417) | 创建发送方通道:define channel(TO.TEST.R) chltype(sdr) conname('127.0.0.1(1418)') xmitq(TEST.R) trptype(tcp) | 创建接收方通道:define channel(TO.TEST) chltype(rcvr) trptype(tcp) |
队列管理器QM2:TEST_QM2
队列名 | 队列属性 | ?命令 | DATA.R | 本地队列 | define qlocal(DATA.R) | REMOTE.DATA | 远程队列 | 指向队列:DATA???? 指向队列管理器:TEST_QM define qremote(REMOTE.DATA) rname(DATA) rqmname(TEST_QM) xmitq(TEST) | TEST | 传输队列 | define qlocal(TEST) usage(xmitq) | 创建对TEST_QM的监听:define listener(DATA.LISTENER) trptype(tcp) control(qmgr) port(1418) | 创建发送方通道:define channel(TO.TEST) chltype(sdr) conname('127.0.0.1(1417)') xmitq(TEST) trptype(tcp) | 创建接收方通道:define channel(TO.TEST.R) chltype(rcvr) trptype(tcp) |
注意事项:
1. QM1和QM2的通道名称要一致,当然QM1和QM2可以互为发送方,因此本例中有两条通道;
2. QM1的监听端口号要与QM2的通道端口一致,如果QM2到QM1有多条发送通道,那QM1要相应匹配地创建相同数目的监听。
创建命令分别在两台不同的服务器上执行:
服务器1?192.168.88.7:
-bash-4.1$ crtmqm -q TEST_QM WebSphere MQ queue manager created. Directory '/var/mqm/qmgrs/TEST_QM' created. Creating or replacing default objects for TEST_QM. Default objects statistics : 65 created. 0 replaced. 0 failed. Completing setup. Setup completed.
启动队列管理器:
-bash-4.1$ strmqm WebSphere MQ queue manager 'TEST_QM' starting. 5 log records accessed on queue manager 'TEST_QM' during the log replay phase. Log replay for queue manager 'TEST_QM' complete. Transaction manager state recovered for queue manager 'TEST_QM'. WebSphere MQ queue manager 'TEST_QM' started.
创建队列等:
-bash-4.1$ runmqsc 5724-H72 (C) Copyright IBM Corp. 1994, 2009. ?ALL RIGHTS RESERVED. Starting MQSC for queue manager TEST_QM. define qlocal(DATA) ? ? ?1 : define qlocal(DATA) AMQ8006: WebSphere MQ queue created. define qremote(REMOTE.DATA.R) rname(DATA.R) rqmname(TEST_RQM) xmitq(TEST.R) ? ? ?2 : define qremote(REMOTE.DATA.R) rname(DATA.R) rqmname(TEST_RQM) xmitq(TEST.R) AMQ8006: WebSphere MQ queue created. define qlocal(TEST.R) usage(xmitq) ? ? ?3 : define qlocal(TEST.R) usage(xmitq) AMQ8006: WebSphere MQ queue created. define listener(DATA.LISTENER) trptype(tcp) control(qmgr) port(1417) ? ? ?4 : define listener(DATA.LISTENER) trptype(tcp) control(qmgr) port(1417) AMQ8626: WebSphere MQ listener created. define channel(TO.TEST.R) chltype(sdr) conname('192.168.88.9(1418)') xmitq(TEST.R) trptype(tcp) ? ? ?5 : define channel(TO.TEST.R) chltype(sdr) conname('192.168.88.9(1418)') xmitq(TEST.R) trptype(tcp) AMQ8014: WebSphere MQ channel created. define channel(TO.TEST) chltype(rcvr) trptype(tcp) ? ? ?6 : define channel(TO.TEST) chltype(rcvr) trptype(tcp) AMQ8014: WebSphere MQ channel created.
重启MQ:
-bash-4.1$ endmqm TEST_QM WebSphere MQ queue manager 'TEST_QM' ending. -bash-4.1$ strmqm WebSphere MQ queue manager 'TEST_QM' starting. 5 log records accessed on queue manager 'TEST_QM' during the log replay phase. Log replay for queue manager 'TEST_QM' complete. Transaction manager state recovered for queue manager 'TEST_QM'. WebSphere MQ queue manager 'TEST_QM' started. ?
服务器2 192.168.88.9???????:
???????-bash-4.1$ crtmqm -q TEST_RQM WebSphere MQ queue manager created. Directory '/var/mqm/qmgrs/TEST_RQM' created. Creating or replacing default objects for TEST_RQM. Default objects statistics : 65 created. 0 replaced. 0 failed. Completing setup. Setup completed.
启动队列管理器:
-bash-4.1$ strmqm WebSphere MQ queue manager 'TEST_RQM' starting. 5 log records accessed on queue manager 'TEST_RQM' during the log replay phase. Log replay for queue manager 'TEST_RQM' complete. Transaction manager state recovered for queue manager 'TEST_RQM'. WebSphere MQ queue manager 'TEST_RQM' started. 创建队列等:
-bash-4.1$ runmqsc 5724-H72 (C) Copyright IBM Corp. 1994, 2009. ?ALL RIGHTS RESERVED. Starting MQSC for queue manager TEST_RQM.??????? define qlocal(DATA.R) ? ? ?1 : define qlocal(DATA.R) AMQ8006: WebSphere MQ queue created. define qremote(REMOTE.DATA) rname(DATA) rqmname(TEST_QM) xmitq(TEST) ? ? ?2 : define qremote(REMOTE.DATA) rname(DATA) rqmname(TEST_QM) xmitq(TEST) AMQ8006: WebSphere MQ queue created. define qlocal(TEST) usage(xmitq) ? ? ?3 : define qlocal(TEST) usage(xmitq) AMQ8006: WebSphere MQ queue created. define listener(DATA.LISTENER) trptype(tcp) control(qmgr) port(1418) ? ? ?4 : define listener(DATA.LISTENER) trptype(tcp) control(qmgr) port(1418) AMQ8626: WebSphere MQ listener created. define channel(TO.TEST) chltype(sdr) conname('192.168.88.7(1417)') xmitq(TEST) trptype(tcp) ? ? ?5 : define channel(TO.TEST) chltype(sdr) conname('192.168.88.7(1417)') xmitq(TEST) trptype(tcp) AMQ8014: WebSphere MQ channel created. define channel(TO.TEST.R) chltype(rcvr) trptype(tcp) ? ? ?6 : define channel(TO.TEST.R) chltype(rcvr) trptype(tcp) AMQ8014: WebSphere MQ channel created. 重启MQ:
-bash-4.1$ dspmq QMNAME(qm1) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? STATUS(Ended unexpectedly) QMNAME(QMEMBFE) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? STATUS(Ended unexpectedly) QMNAME(qm_test1) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?STATUS(Ended normally) QMNAME(XSMS) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?STATUS(Ended unexpectedly) QMNAME(QM_ORANGE) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? STATUS(Ended normally) QMNAME(venus.queue.manager) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? STATUS(Ended normally) QMNAME(TEST_RQM) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?STATUS(Running) -bash-4.1$ endmqm TEST_RQM Quiesce request accepted. The queue manager will stop when all outstanding work is complete. -bash-4.1$ endmqm TEST_RQM WebSphere MQ queue manager 'TEST_RQM' ending.
-bash-4.1$ strmqm? WebSphere MQ queue manager 'TEST_RQM' starting. 5 log records accessed on queue manager 'TEST_RQM' during the log replay phase. Log replay for queue manager 'TEST_RQM' complete. Transaction manager state recovered for queue manager 'TEST_RQM'. WebSphere MQ queue manager 'TEST_RQM' started.
三,测试
3.1 启动通道
为了方便直观,?我使用图形工具(IBM MQ Explorer)来启动的。当然也可以通过命令行的方式去启动通道。
3.2 测试消息的发送和接收,方法1,图形化:
结合2.1的架构图,在队列管理器QM1上,将测试的消息放到REMOTE.DATA.R远程队列,数据流应该是这样:
放消息到发送方的远程队列(REMOTE.DATA.R)-->传输队列(TEST.R)-->发送方通道(TO.TEST.R)-->网络-->接收方通道(TO.TEST.R)-->接收方本地队列(DATA.R)
在192.1688.7上放消息:
?然后再192.168.88.9上查看消息:
测试完成。
反之,我在192.168.88.9上也可以发送消息到88.7上的队列上:
?3.3?测试消息的发送和接收,方法2,命令行:
???????尝试从88.7发送消息到88.9:
登录88.7: cd /opt/mqm/samp/bin
使用amqsput命令发送消息
命令格式:amqsput ?QueueName [QueueManagerName] ?
详细命令参考官方文档:
IBM Documentation
-bash-4.1$ ./amqsput REMOTE.DATA.R TEST_QM Sample AMQSPUT0 start target queue is REMOTE.DATA.R Goya send message from 88.7 to 88.9, firt one message!!!!
Sample AMQSPUT0 end 注意:敲两次“回车”键输入消息结束。
登录88.9:
查看消息:
查看队列管理器TEST_RQM中名为DATA.R的队列: -bash-4.1$ ./amqsbcg DATA.R TEST_RQM
当然,也可以使用amqsget命令接收消息消息:
?MQDISC-bash-4.1$ ./amqsget DATA.R TEST_RQM
?至此,MQ消息的方式和接收功能测试完成。
|