IBM MQ简明教程——2. 将消息发送至远程队列
2019-04-16 本文已影响0人
改变_从现在开始
一. 创建队列管理器
- 通过以下命令,创建名为QMGR_02_BANK的队列管理器
crtmqm QMGR_02_BANK
- 通过输入以下命令来启动此队列管理器
strmqm QMGR_02_BANK
示例如下:
$ crtmqm QMGR_02_BANK
IBM MQ queue manager created.
Directory '/var/mqm/qmgrs/QMGR_02_BANK' created.
The queue manager is associated with installation 'Installation1'.
Creating or replacing default objects for queue manager 'QMGR_02_BANK'.
Default objects statistics : 83 created. 0 replaced. 0 failed.
Completing setup.
Setup completed.
$ strmqm QMGR_02_BANK
The system resource RLIMIT_NOFILE is set at an unusually low level for IBM MQ.
IBM MQ queue manager 'QMGR_02_BANK' starting.
The queue manager is associated with installation 'Installation1'.
5 log records accessed on queue manager 'QMGR_02_BANK' during the log replay phase.
Log replay for queue manager 'QMGR_02_BANK' complete.
Transaction manager state recovered for queue manager 'QMGR_02_BANK'.
IBM MQ queue manager 'QMGR_02_BANK' started using V9.1.1.0.
$
二. 创建本地队列
- 通过输入以下命令来启用 MQSC 命令
runmqsc QMGR_02_BANK
- 通过输入以下命令来定义名为 QM_02_BANK 的本地队列(传输队列)
define qlocal (Q_TRAN_02_BANK) usage (xmitq)
此时会显示消息,告诉您已经创建了队列和缺省 IBM MQ 对象。
qlocal:队列名称
usage:队列用法,normal代表本地队列,xmitq代表传输队列
- 通过输入以下命令来定义远程队列定义
define qremote (Q1) rname (Q1) rqmname(QMGR_01_BANK) xmitq (Q_TRAN_02_BANK)
qremote:远程队列名称
rname:接收队列的名称
rqmname:接收队列所属的队列管理器名称
xmitq:传输队列管理器名称
注意:远程队列必须与接收队列名称完全一致,否则消息无法发送出去。
示例如下:
$ strmqm QMGR_02_BANK
The system resource RLIMIT_NOFILE is set at an unusually low level for IBM MQ.
IBM MQ queue manager 'QMGR_02_BANK' starting.
The queue manager is associated with installation 'Installation1'.
5 log records accessed on queue manager 'QMGR_02_BANK' during the log replay phase.
Log replay for queue manager 'QMGR_02_BANK' complete.
Transaction manager state recovered for queue manager 'QMGR_02_BANK'.
IBM MQ queue manager 'QMGR_02_BANK' started using V9.1.1.0.
$ runmqsc QMGR_02_BANK
5724-H72 (C) Copyright IBM Corp. 1994, 2018.
Starting MQSC for queue manager QMGR_02_BANK.
define qlocal (Q_TRAN_02_BANK) usage (xmitq)
1 : define qlocal (Q_TRAN_02_BANK) usage (xmitq)
AMQ8006I: IBM MQ queue created.
define qremote (Q1) rname (Q1) rqmname(QMGR_01_BANK) xmitq (Q_TRAN_02_BANK)
2 : define qremote (Q1) rname (Q1) rqmname(QMGR_01_BANK) xmitq (Q_TRAN_02_BANK)
AMQ8006I: IBM MQ queue created.
end
3 : end
2 MQSC commands read.
No commands have a syntax error.
All valid MQSC commands were processed.
$
三、创建接收消息通道
- 在接收机器上打开命令提示符,然后按照以下步骤操作:
通过输入以下命令来启动 MQSC:
runmqsc QMGR_01_BANK
- 通过输入以下命令来定义接收通道
define channel (CHL1) chltype (RCVR) trptype (TCP)
channel:通道名称
chltype:通道类型RCVR:接收
SDR:发送trptype:传输类型协议
- 打开新的命令窗口并查看哪些端口空闲。输入下列命令:
netstat -an
这将显示正在运行的进程的列表。查看每个进程的端口号以了解端口 1414 是否正在使用中;您可以通过查看本地地址列来找到它。该信息采用 ip_address:port_being _used 格式提供。
如果端口 1414 未使用,那么稍后在验证时使用 1414 作为侦听器和发送方通道的端口号。如果它在使用中,那么选择未使用的备用端口;例如,如果 1415 未被另一进程使用,那么选择该端口。
- 验证要求您启动缺省的 IBM MQ 侦听器。缺省情况下,该侦听器将侦听端口 1414。如果在步骤 中发现端口 1414 空闲,那么不需要执行任何操作即可继续执行步骤,如果必须使用除 1414 之外的端口,那么修改 SYSTEM.DEFAULT.LISTENER.TCP 的定义。例如,要使用端口 8088,请在 MQSC 窗口中输入下列命令:
alter listener(system.default.listener.tcp) trptype(tcp) port(8088)
- 在 MQSC 窗口中,通过输入以下命令来启动缺省 IBM MQ 侦听器
start listener(system.default.listener.tcp)
- 通过输入以下命令来停止 MQSC:
end
将显示一些消息,然后会显示命令提示符。
示例如下:
$ runmqsc QMGR_01_BANK
5724-H72 (C) Copyright IBM Corp. 1994, 2018.
Starting MQSC for queue manager QMGR_01_BANK.
define channel (CHL1) chltype (RCVR) trptype (TCP)
1 : define channel (CHL1) chltype (RCVR) trptype (TCP)
AMQ8014I: IBM MQ channel created.
alter listener(system.default.listener.tcp) trptype(tcp) port(8088)
2 : alter listener(system.default.listener.tcp) trptype(tcp) port(8088)
AMQ8623I: IBM MQ listener changed.
start listener(system.default.listener.tcp)
3 : start listener(system.default.listener.tcp)
AMQ8021I: Request to start IBM MQ listener accepted.
end
4 : end
3 MQSC commands read.
No commands have a syntax error.
All valid MQSC commands were processed.
$
四、创建发送消息通道
- 在发送机器上打开命令提示符,然后按照以下步骤操作
通过输入以下命令来启动 MQSC:
runmqsc QMGR_02_BANK
- 通过输入以下命令来定义发送方通道
define channel(CHL1) chltype(sdr) conname('127.0.0.1(8088)') xmitq(Q_TRAN_02_BANK) trptype(tcp)
xmitq:传输队列名称
con-name:接收方工作站的 TCP/IP 地址。值 port 是接收方机器上对其运行侦听器的端口,缺省值是 1414。
注意:发送通道必须与接收通道名称相同,否则消息无法发送。
- 通过输入以下命令来启动通道
start channel (CHL1)
- 通过输入以下命令来停止 MQSC
end
示例如下:
$ runmqsc QMGR_02_BANK
5724-H72 (C) Copyright IBM Corp. 1994, 2018.
Starting MQSC for queue manager QMGR_02_BANK.
define channel(CHL1) chltype(sdr) conname('127.0.0.1(8088)') xmitq(Q_TRAN_02_BANK) trptype(tcp)
1 : define channel(CHL1) chltype(sdr) conname('127.0.0.1(8088)') xmitq(Q_TRAN_02_BANK) trptype(tcp)
AMQ8014I: IBM MQ channel created.
start channel (CHL1)
2 : start channel (CHL1)
AMQ8018I: Start IBM MQ channel accepted.
end
3 : end
2 MQSC commands read.
No commands have a syntax error.
All valid MQSC commands were processed.
$
五、查看发送通道状态
- 在发送机器上打开命令提示符,然后按照以下步骤操作
通过输入以下命令来启动 MQSC:
runmqsc QMGR_02_BANK
- 通过输入以下命令查看发送通道状态
dis chs(*)
示例如下:
$ runmqsc QMGR_02_BANK
5724-H72 (C) Copyright IBM Corp. 1994, 2018.
Starting MQSC for queue manager QMGR_02_BANK.
dis chs(*)
1 : dis chs(*)
AMQ8417I: Display Channel Status details.
CHANNEL(CHL1) CHLTYPE(SDR)
CONNAME(127.0.0.1(8088)) CURRENT
RQMNAME(QMGR_01_BANK) STATUS(RUNNING)
SUBSTATE(MQGET) XMITQ(Q_TRAN_02_BANK)
end
2 : end
One MQSC command read.
No commands have a syntax error.
All valid MQSC commands were processed.
$
六、查看接收通道状态
- 在发送机器上打开命令提示符,然后按照以下步骤操作
通过输入以下命令来启动 MQSC:
runmqsc QMGR_01_BANK
- 通过输入以下命令查看发送通道状态
dis chs(*)
示例如下:
$ runmqsc QMGR_01_BANK
5724-H72 (C) Copyright IBM Corp. 1994, 2018.
Starting MQSC for queue manager QMGR_01_BANK.
dis chs(*)
1 : dis chs(*)
AMQ8417I: Display Channel Status details.
CHANNEL(CHL1) CHLTYPE(RCVR)
CONNAME(127.0.0.1) CURRENT
RQMNAME(QMGR_02_BANK) STATUS(RUNNING)
SUBSTATE(RECEIVE)
end
2 : end
One MQSC command read.
No commands have a syntax error.
All valid MQSC commands were processed.
$
七、 使用 amqsput 将测试消息放入远程队列
- 启动 amqsput 样本程序
在 Linux 上,更改为 MQ_INSTALLATION_PATH/samp/bin 目录,其中 MQ_INSTALLATION_PATH 表示安装了 IBM MQ 的高级目录。输入以下命令:
./amqsput Q1 QMGR_02_BANK
- 在一行或多行上输入某些消息文本,然后按 Enter 键两次。 此时会显示以下消息:
Sample AMQSPUT0 end
示例如下:
$ pwd
/opt/mqm/samp/bin
$ ./amqsput Q1 QMGR_02_BANK
Sample AMQSPUT0 start
target queue is Q1
Hello World!
ni hao ma!
Sample AMQSPUT0 end
$
八、 验证是否已发送测试消息
- 启动 amqsget 样本程序
在 Linux 上,更改为 MQ_INSTALLATION_PATH/samp/bin 目录,其中 MQ_INSTALLATION_PATH 表示安装了 IBM MQ 的高级目录。输入以下命令:
./amqsget Q1 QMGR_01_BANK
结果
此时会启动该样本程序,并显示您的消息以及此队列上的任何其他消息。在暂停 15 秒钟后,样本程序结束,并再次显示命令提示符。
示例如下:
$ pwd
/opt/mqm/samp/bin
$ ./amqsget Q1 QMGR_01_BANK
Sample AMQSGET0 start
message <Hello World!>
message <ni hao ma!>
no more messages
Sample AMQSGET0 end
$
参考
将消息发送至远程队列