linux下 MQ第二弹:队列管理器的配置,实现双机MQI通道异步双向通信,亲测!!

时间:2022-03-29 17:28:03

本人前面文章一提到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