WebSphereMQ 隊列管理器、隊列、通道的理解

一個隊列管理器可以有多個隊列和多個通道。

隊列管理器相當於RabbitMQ中的虛擬主機。

隊列分爲本地隊列,遠程隊列,傳輸隊列。

通道分爲發送通道、接收通道、服務器通道等等。

發送到本地隊列上的消息存儲在本機上。

發送到遠程隊列上的消息,通過綁定傳輸隊列傳輸到別的隊列管理器上的本地隊列上存儲。

通道爲消息進出隊列的渠道橋樑,發送通道只能出,接收通道只能進,服務器通道可以進出。

本地例子:

發送消息===>Java程序===>服務器通道===>本地隊列===>服務器通道===>Python程序===>收到消息

兩家公司各自服務器AB例子:

公司A發送消息===>Java程序===>服務器通道A===>遠程隊列A>>>>傳輸隊列A>>>>發送通道A>>>>接收通道B>>>>本地隊列B===>服務器通道B===>Python程序===>公司B收到消息===>響應===>響應消息發送===>Python程序===>服務器通道B===>遠程隊列B>>>>傳輸隊列B>>>>發送通道B>>>>接收隊列A>>>>本地隊列A===>服務器通道A===>Java程序===>公司A收到響應消息

 

本地隊列:無需綁定任何東西,直接定義聲明即可。

#本地隊列名稱
export QueueName=QUEUE_TEST

#是否持久化
export PERSIST=YES
# NO 該隊列上的消息在隊列管理器重新啓動時丟失。
# YES 該隊列上的消息在隊列管理器重新啓動時保存了下來。

#消息最大深度
export MAXDEPTH=10000

#消息大小
export MAXMSGL=4M
#隊列管理器MAXMSGL,默認值:4M,可以調整範圍:32K - 100M;
#通道MAXMSGL,默認值:4M,可以調整範圍:0-隊列管理器MAXMSGL;
#隊列MAXMSGL,默認值:4M,可以調整範圍:0-隊列管理器MAXMSGL;

#描述
export LocalNodeDes=測試隊列

#隊列管理器名稱
export QmgrName

echo "DEFINE QLOCAL($QueueName) LIKE(SYSTEM.DEFAULT.LOCAL.QUEUE) USAGE(NORMAL) REPLACE DEFPSIST($PERSIST) MAXDEPTH($MAXDEPTH) MAXMSGL($MAXMSGL) DESCR('$LocalNodeDes')"|runmqsc $QmgrName

服務器通道:主要給java、C、python等程序訪問收發數據,也無需綁定任何東西,直接聲明。

#通道名稱
export ChannelName=DC.SVRCONN

#協議類型
export TRPTYPE=TCP

#授權用戶
export MqmUsr=mqm

#消息大小
export MAXMSGL=4M
#隊列管理器MAXMSGL,默認值:4M,可以調整範圍:32K - 100M;
#通道MAXMSGL,默認值:4M,可以調整範圍:0-隊列管理器MAXMSGL;
#隊列MAXMSGL,默認值:4M,可以調整範圍:0-隊列管理器MAXMSGL;


echo "DEFINE CHANNEL($ChannelName) CHLTYPE(SVRCONN) TRPTYPE($TRPTYPE) MCAUSER('$MqmUsr') MAXMSGL($MAXMSGL) REPLACE"|runmqsc $QmgrName

接收通道:

echo "DEFINE CHANNEL($ReceiverChannel) CHLTYPE(RCVR) TRPTYPE($TRPTYPE) REPLACE MAXMSGL($MAXMSGL) HBINT($HBINT) NPMSPEED(NORMAL) MSGEXIT ('$RCVRMSGEXIT') SSLPEER('$SSLPEER') DESCR('To Tips System Online receive Message Channel')"|runmqsc $QmgrName
	

發送通道:需綁定接收方隊列管理器所在的主機地址和開放的監聽端口,並綁定相應的傳輸隊列。

echo "DEFINE CHANNEL($SendChannel) CHLTYPE(SDR) CONNAME('$RemoteHostName($RemoteHostPort)') LOCLADDR('$LOCLADDR') XMITQ('$TransportQueue') TRPTYPE($TRPTYPE) REPLACE MAXMSGL($MAXMSGL) DISCINT($DISCINT) HBINT($HBINT) SHORTTMR($SHORTTMR) NPMSPEED(NORMAL) MSGEXIT ('$SDRMSGEXIT') SSLPEER('$SSLPEER') DESCR('To Tips System Online Send Message Channel')"|runmqsc $QmgrName
	

傳輸隊列:需綁定相應的發送通道

echo "DEFINE QLOCAL($TransportQueue) LIKE(SYSTEM.DEFAULT.LOCAL.QUEUE) USAGE(XMITQ) REPLACE DEFPSIST(NO) MAXDEPTH($MAXDEPTH) MAXMSGL($MAXMSGL) TRIGGER TRIGTYPE(FIRST) INITQ(SYSTEM.CHANNEL.INITQ) TRIGDATA($SendChannel) TRIGDPTH(1) DESCR('To Tips System Online Transfer Queue')"|runmqsc $QmgrName

遠程隊列:需綁定相應的傳輸隊列

echo "DEFINE QREMOTE($RemoteQueue) LIKE(SYSTEM.DEFAULT.REMOTE.QUEUE) RNAME('L.$RemoteNodeCode.$AreaNodeCode') RQMNAME('QM_SZZHCZ_1_'$RemoteNodeCode'_01') XMITQ($TransportQueue) DEFPSIST(YES) DESCR('$RemoteNodeDes') REPLACE"|runmqsc $QmgrName

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章