本人前面文章一提到MQ 在linux下的安装,在此只描述队列管理器的配置,实现MQI通道的双向通讯。
一下方法我已亲测!!
贴出A,B两机的MQ配置记录:
A机:
#**------------------------------
#**--创建QMA队列管理器
crtmqm -ld /var/mqm/log -lc -lf 16384 -lp 5 -ls 2 QMA
#**--启动QMA队列管理器
strmqm QMA
#**--进入QMA队列管理器的管理交互界面
runmqsc QMA
#**------------------------------
#**----定义QMA本地队列
DEF QL(QU_QMA) MAXDEPTH(100000) DEFPSIST(YES) REPLACE
#**----定义死信队列
DEF QL(DEADQ) MAXDEPTH(100000) DEFPSIST(YES) REPLACE
#**----把死信队列DEADQ设置为队列管理器默认的死信队列
ALTER QMGR DEADQ(DEADQ)
#**------------------------------
#**----定义监听
DEF LISTENER(LSNTCP) TRPTYPE(TCP) PORT(1414) BACKLOG(0) CONTROL(QMGR)
START LISTENER(LSNTCP)
#**------------------------------
#**----定义服务器连接通道
DEFINE CHANNEL(SYSTEM.ADMIN.SVRCONN) CHLTYPE(SVRCONN) TRPTYPE(TCP) MCAUSER('mqm') REPLACE
#**------------------------------
#**----定义到队列管理器QMB的远程队列
DEF QR(QR_QMA_QMB) RNAME(QU_QMB) RQMNAME(QMB) XMITQ(XMA) DEFPSIST(YES) REPLACE
#**------------------------------
#**----定义到队列管理器QMB的通信队列
DEF QL(XMA) USAGE(XMITQ) MAXDEPTH(100000) TRIGGER TRIGTYPE(FIRST) INITQ(SYSTEM.CHANNEL.INITQ) DEFPSIST(YES) TRIGDATA(CH_QMA_QMB) REPLACE
#**------------------------------
#**----定义发送消息到QMB的发送通道
DEF CHL(CH_QMA_QMB) CHLTYPE(SDR) LOCLADDR(192.168.19.189) CONNAME('192.168.19.144(1424)') XMITQ(XMA) TRPTYPE(TCP) REPLACE
#**----定义从QMB接收消息的接收通道
DEF CHL(CH_QMB_QMA) CHLTYPE(RCVR) TRPTYPE(TCP) REPLACE
#**----启动通道
START CHL(CH_QMA_QMB)
#**----退出交互界面
END
$ cd /opt/mqm/samp/bin
$ ./amqsput QR_QMA_QMB QMA
Sample AMQSPUT0 start
target queue is QR_QMA_QMB
123
abc
Ctrl+c(退出输入消息)
在B机执行
$ ./amqsget QU_QMB QMB
Sample AMQSGET0 start
message <123>
message <abc>
B机:
#**------------------------------
#**--创建QMB队列管理器
crtmqm -ld /var/mqm/log -lc -lf 16384 -lp 5 -ls 2 QMB
#**--启动QMB队列管理器
strmqm QMB
#**--进入QMB队列管理器的管理交互界面
runmqsc QMB
#**------------------------------
#**----定义QMB本地队列
DEF QL(QU_QMB) MAXDEPTH(100000) DEFPSIST(YES) REPLACE
#**----定义死信队列
DEF QL(DEADQ) MAXDEPTH(100000) DEFPSIST(YES) REPLACE
#**----把死信队列DEADQ设置为队列管理器默认的死信队列
ALTER QMGR DEADQ(DEADQ)
#**------------------------------
#**----定义监听
DEF LISTENER(LSNTCP) TRPTYPE(TCP) PORT(1424) BACKLOG(0) CONTROL(QMGR)
START LISTENER(LSNTCP)
#**------------------------------
#**----定义服务器连接通道
DEFINE CHANNEL(SYSTEM.ADMIN.SVRCONN) CHLTYPE(SVRCONN) TRPTYPE(TCP) MCAUSER('mqm') REPLACE
#**------------------------------
#**----定义到队列管理器QMA的远程队列
DEF QR(QR_QMB_QMA) RNAME(QU_QMA) RQMNAME(QMA) XMITQ(XMB) DEFPSIST(YES) REPLACE
#**------------------------------
#**----定义到队列管理器QMA的通信队列
DEF QL(XMB) USAGE(XMITQ) MAXDEPTH(100000) TRIGGER TRIGTYPE(FIRST) INITQ(SYSTEM.CHANNEL.INITQ) DEFPSIST(YES) TRIGDATA(CH_QMB_QMA) REPLACE
#**------------------------------
#**----定义发送消息到QMA的发送通道
DEF CHL(CH_QMB_QMA) CHLTYPE(SDR) LOCLADDR(192.168.19.144) CONNAME('192.168.19.189(1414)') XMITQ(XMB) TRPTYPE(TCP) REPLACE
#**----定义从QMA接收消息的接收通道
DEF CHL(CH_QMA_QMB) CHLTYPE(RCVR) TRPTYPE(TCP) REPLACE
#**----启动通道
START CHL(CH_QMB_QMA)
#**----退出交互界面
END
$ ./amqsget QU_QMB QMB
Sample AMQSGET0 start
message <123>
message <abc>
no more messages
Sample AMQSGET0 end
$ ./amqsput QR_QMB_QMA QMB
Sample AMQSPUT0 start
target queue is QR_QMB_QMA
111
aaa
Ctrl+c(退出输入消息)
在A机执行:
$ ./amqsget QU_QMA QMA
Sample AMQSGET0 start
message <111>
message <aaa>
注意:
确保双机联通,防火墙关闭,检查端口是否已在监听!
也可以直接在一台机器上面实验,只要把iP改为127.0.0.1 ,端口不同,队列管理器名字不同即可!!
本文出自 “燃烧技术的活力” 博客,请务必保留此出处http://boyishachang.blog.51cto.com/3485129/1255356