MQ实现两个应用系统之间的通信-----实际操作(二)

转载自: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之间互相发送消息。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值