MQ實現兩個應用系統之間的通訊-----實際操作(二)

qq_27618817發表於2020-10-27

轉載自: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之間互相傳送訊息。

相關文章