多个队列管理器间相互通信
说明:本例旨在使用本地机器和阿里云服务器,分别建立消息发送队列管理器和消息接收队列管理器(本地发送消息,阿里云接收消息)。本地IBM MQ(windows)和阿里云IBM MQ(linux)之间相互通信。
- 本地建立发送消息队列管理器MQ_SEND,侦听端口1417
1.1右击队列管理器,点击新建,点击队列管理器
1.2输入队列管理器名称MQ_SEND
1.3 点击两次下一步后,进入队列管理器输入配置选项,点击创建服务器连接通道(必须)
1.4设置侦听端口,如果1414被使用可设置其他端口
2、本地建立本地队列(传输)
2.1右击队列,点击新建,点击本地队列:
2.2输入队列名:LQ
2.3更改属性:更改用法为传输(必须)
此本地队列只用于传输,因此此本地队列即传输队列
3、本地建立远程队列定义
3.1右击队列,点击新建,点击远程队列定义:
3.2输入远程队列定义名称:
3.3点击下一步,进入更改属性:
4、本地建立发送通道:
4.1点击通道,右击新建,点击发送方通道
4.2输入发送通道名称:
对于发送和接收方通道要特别注意MQ_SEND 的发送方就是MQ_RECEIVE的接收方,两个通道的名称必须是相同的;
MQ_SEND 的接收方就是MQ_RECEIVE的发送方
(注:此处通道名称必须和阿里云建立的通道名称一致,只是通道类型不同,此处通道为发送通道,阿里云为接收通道)
4.3更改属性:
连接名称:IP(port),IP即阿里云IP地址,port即接收队列管理器所建立的侦听端口
传输队列:本地服务器建立的MQ_SEND的本地队列名(配置了传输用法)
5、阿里云上建立接收队列管理器
5.1创建接收队列管理器
crtmqm QM_RECEIVE
5.2启动队列管理器strmqm QM_RECEIVE
5.3查看队列管理器QM_RECEIVE的启动情况:
6、进入阿里云队列管理器创建队列
6.1运行接收队列管理器
runmqsc QM_RECEIVE
6.2创建阿里云队列管理器的本地队列
DEFINE QLOCAL(RLQ) REPLACE
7、进入阿里云队列管理器创建接收通道
建立阿里云接收通道,此通道名与本地发送通道名相同,只是类型不同
DEFINE CHANNEL(SEND_RECEIVE_CHL) CHLTYPE(RCVR) TRPTYPE(TCP) REPLACE
创建好后,直接启动发送方通道即可联动启动接收方通道。
但是发现直接启动通道失败,此时需要建立阿里云队列管理器的侦听端口
由于阿里云上1414端口已经被其他队列管理器使用,所以建立1416端口,建立完成后需要去控制台,开启1416端口的防火墙以供远程调用
8、创建队列管理器的侦听端口
远程的队列管理器至少有一个 TCP/IP Listener
linux : runmqlsr -m QM_RECEIVE -t tcp -p 1416
windows: start runmqlsr -m QM2 -t tcp -p 1416
查看监听是否启动:
netstat -an | find /i "1416"
9、监听端口设置好后,再次启动通道
10、测试
10.1在本地机器的队列管理器,远程队列中放入测试消息
10.2在阿里云接收队里管理器上接收消息:
amqsget RLQ QM_RECEIVE