转载自:https://blog.csdn.net/spring_model/article/details/52794191
主要用于学习
使用IBM WebSphere MQ实现两个应用系统之间通信。两个应用系统都必须安装MQ服务器,只有双方都安装了MQ同时也创建队列管理器,而且双方都启动MQ的队列管理器才可以实现通。
这里以A <------->B 作为通信双方。
A方创建队列管理器和相应的队列用于通信
#创建队列管理器
env MQSPREFIX=/var/mqm/ crtmqm -ld /var/mqm/qmgrs/log -lc -lf 16384 -lp 20 -ls 2 QMU5810A
#启动队列管理器
strmqm QMU5810A
#进入队列管理器命令行
runmqsc QMU5810A
#创建本地队列(用于A方在本地取消息)
DEF QL(MSGCCPC_1) MAXDEPTH(100000) DEFPSIST(yes) MAXMSGL(4096000) REPLACE
##创建死信队列
DEF QL(DEADQ) MAXDEPTH(290000) DEFPSIST(yes) REPLACE
ALTER QMGR DEADQ(DEADQ)
#创建监听器(监听自己主机用于接收消息的端口)
DEF LISTENER(LSNRPMTS) TRPTYPE(TCP) PORT(1428) BACKLOG(0) CONTROL(QMGR)
#启动监听器
START LISTENER(LSNRPMTS)
#创建本地传输队列(用于本地队列实现消息之间的传输)
DEF QL(XM2900A) USAGE(XMITQ) MAXDEPTH(290000) TRIGGER TRIGTYPE(FIRST) INITQ(SYSTEM.CHANNEL.INITQ) DEFPSIST(yes) MAXMSGL(10240000) TRIGDATA(313231000013B.MBFEB) REPLACE
#创建发送通道(发送通道名称必须和对方接受通道名称一致)
#LOCLADDR对应本地机器的IP地址
#CONNAME为目标主机的IP地址和端口号
#XMITQ为本地传输队列
#创建发送通道
DEF CHL(313231000013B.MBFEB) CHLTYPE(SDR) LOCLADDR(192.168.0.50) CONNAME('192.168.0.100(1426)') XMITQ(XM2900A) TRPTYPE(tcp) MAXMSGL(10240000) DISCINT(0) SHORTRTY(10000) SHORTTMR(30) LONGTMR(300) LONGRTY(999999999) BATCHSZ(50) REPLACE
#启动发送通道
START CHL(313231000013B.MBFEB)
#创建远程队列(当给B发送消息时直接发到远程队列里)
#RNAME对应对方MQ的本地队列;
#RQMNAME对应对方MQ的队列管理器
#XMITQ为本地的传输队列
#创建远程队列(主要用于和对方队列通信)
DEF QR(MSGCCPC_2) RNAME(MSGCCPC_BANK_1) RQMNAME(QMU5810A_BANK) XMITQ(XM2900A) DEFPSIST(yes) REPLACE
#创建接收通道(接收通道和对方MQ的发送通道名称一致)
DEF CHL(MBFEB.313231000013B) CHLTYPE(RCVR) TRPTYPE(tcp) MAXMSGL(10240000) REPLACE
#创建服务通道(不能和对方服务通道同名称)
DEFINE CHANNEL(DC.SVRCONN) CHLTYPE(SVRCONN) REPLACE
至此,A方的队列管理器和队列通道等信息都已经创建好
########################################################################################
创建B方的队列管理器和队列名称等信息。
#创建队列管理器
env MQSPREFIX=/var/mqm/ crtmqm -ld /var/mqm/qmgrs/log -lc -lf 16384 -lp 20 -ls 2 QMU5810A_BANK
#启动队列管理器
strmqm QMU5810A_BANK
#进入队列管理器命令行
runmqsc QMU5810A_BANK
#创建本地队列(用于B方在本地取消息)
DEF QL(MSGCCPC_BANK_1) MAXDEPTH(100000) DEFPSIST(yes) MAXMSGL(4096000) REPLACE
#创建监听器(监听自己B方接收消息的端口)
DEF LISTENER(LSNRPMTS_BANK) TRPTYPE(TCP) PORT(1426) BACKLOG(0) CONTROL(QMGR)
#启动监听器
START LISTENER(LSNRPMTS_BANK)
#创建本地传输队列(用于B方本地间本地队列消息的传递)
DEF QL(XM2900A_BANK) USAGE(XMITQ) MAXDEPTH(290000) TRIGGER TRIGTYPE(FIRST) INITQ(SYSTEM.CHANNEL.INITQ) DEFPSIST(yes) MAXMSGL(10240000) TRIGDATA(MBFEB.313231000013B) REPLACE
#创建发送通道(发送通道名称和对方接受通道名称一致)
#LOCLADDR对应本地机器的IP地址
#CONNAME为对方主机的IP地址和端口号
#XMITQ为本地传输队列
#创建发送通道
DEF CHL(MBFEB.313231000013B) CHLTYPE(SDR) LOCLADDR(192.168.0.100) CONNAME('192.168.0.50(1428)') XMITQ(XM2900A_BANK) TRPTYPE(tcp) MAXMSGL(10240000) DISCINT(0) SHORTRTY(10000) SHORTTMR(30) LONGTMR(300) LONGRTY(999999999) BATCHSZ(50) REPLACE
#启动发送通道
START CHL(MBFEB.313231000013B)
#创建远程队列(当给A发送消息时,直接发到这个远程队列,A取消息时直接在A的本地队列取)
#RNAME对应对方MQ的本地队列;
#RQMNAME对应对方MQ的队列管理器
#XMITQ为本地的传输队列
#创建远程队列;
DEF QR(MSGCCPC_BANK_2) RNAME(MSGCCPC_1) RQMNAME(QMU5810A) XMITQ(XM2900A_BANK) DEFPSIST(yes) REPLACE
#创建接收通道(接收通道和对方MQ的发送通道名称一致)
DEF CHL(313231000013B.MBFEB) CHLTYPE(RCVR) TRPTYPE(tcp) MAXMSGL(10240000) REPLACE
**创建服务通道(不能和对方服务通道同名称)
DEFINE CHANNEL(BANK.SVRCONN) CHLTYPE(SVRCONN) REPLACE
至此,B方的队列管理器和对列已经创建好。接下来就是调试双方正常工作,发互相发送消息。请看下一篇文章,MQ之间互相发送消息。