IBM MQ简明教程——2. 将消息发送至远程队列

2019-04-16  本文已影响0人  改变_从现在开始

一. 创建队列管理器

  1. 通过以下命令,创建名为QMGR_02_BANK的队列管理器
crtmqm QMGR_02_BANK
  1. 通过输入以下命令来启动此队列管理器
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.
$

二. 创建本地队列

  1. 通过输入以下命令来启用 MQSC 命令
runmqsc QMGR_02_BANK
  1. 通过输入以下命令来定义名为 QM_02_BANK 的本地队列(传输队列)
define qlocal (Q_TRAN_02_BANK) usage (xmitq)

此时会显示消息,告诉您已经创建了队列和缺省 IBM MQ 对象。

qlocal:队列名称
usage:队列用法,normal代表本地队列,xmitq代表传输队列

  1. 通过输入以下命令来定义远程队列定义
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.
$ 

三、创建接收消息通道

  1. 在接收机器上打开命令提示符,然后按照以下步骤操作:
    通过输入以下命令来启动 MQSC:
runmqsc QMGR_01_BANK
  1. 通过输入以下命令来定义接收通道
define channel (CHL1) chltype (RCVR) trptype (TCP)

channel:通道名称
chltype:通道类型

RCVR:接收
SDR:发送

trptype:传输类型协议

  1. 打开新的命令窗口并查看哪些端口空闲。输入下列命令:
netstat -an

这将显示正在运行的进程的列表。查看每个进程的端口号以了解端口 1414 是否正在使用中;您可以通过查看本地地址列来找到它。该信息采用 ip_address:port_being _used 格式提供。
如果端口 1414 未使用,那么稍后在验证时使用 1414 作为侦听器和发送方通道的端口号。如果它在使用中,那么选择未使用的备用端口;例如,如果 1415 未被另一进程使用,那么选择该端口。

  1. 验证要求您启动缺省的 IBM MQ 侦听器。缺省情况下,该侦听器将侦听端口 1414。如果在步骤 中发现端口 1414 空闲,那么不需要执行任何操作即可继续执行步骤,如果必须使用除 1414 之外的端口,那么修改 SYSTEM.DEFAULT.LISTENER.TCP 的定义。例如,要使用端口 8088,请在 MQSC 窗口中输入下列命令:
alter listener(system.default.listener.tcp) trptype(tcp) port(8088)
  1. 在 MQSC 窗口中,通过输入以下命令来启动缺省 IBM MQ 侦听器
start listener(system.default.listener.tcp)
  1. 通过输入以下命令来停止 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.
$

四、创建发送消息通道

  1. 在发送机器上打开命令提示符,然后按照以下步骤操作
    通过输入以下命令来启动 MQSC:
runmqsc QMGR_02_BANK
  1. 通过输入以下命令来定义发送方通道
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。
注意:发送通道必须与接收通道名称相同,否则消息无法发送。

  1. 通过输入以下命令来启动通道
start channel (CHL1)
  1. 通过输入以下命令来停止 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.
$

五、查看发送通道状态

  1. 在发送机器上打开命令提示符,然后按照以下步骤操作
    通过输入以下命令来启动 MQSC:
runmqsc QMGR_02_BANK
  1. 通过输入以下命令查看发送通道状态
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.
$

六、查看接收通道状态

  1. 在发送机器上打开命令提示符,然后按照以下步骤操作
    通过输入以下命令来启动 MQSC:
runmqsc QMGR_01_BANK
  1. 通过输入以下命令查看发送通道状态
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 将测试消息放入远程队列

  1. 启动 amqsput 样本程序
    在 Linux 上,更改为 MQ_INSTALLATION_PATH/samp/bin 目录,其中 MQ_INSTALLATION_PATH 表示安装了 IBM MQ 的高级目录。输入以下命令:
./amqsput Q1 QMGR_02_BANK
  1. 在一行或多行上输入某些消息文本,然后按 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
$

八、 验证是否已发送测试消息

  1. 启动 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
$

参考
将消息发送至远程队列

上一篇下一篇

猜你喜欢

热点阅读