MQ通道配置
通道是用來連接兩個隊列管理器的;
在單個隊列管理器內讀寫消息不需要建立通道;但在一個隊列管理器中寫入消息,而從另一個隊列管理器中的隊列取出消息,這就需要建立通道;
通道,對跨機和本機的隊列管理器不做區分,對於兩個隊列管理器,不論是否分布在同一個機器上,配置方式都是一樣的,所不同的就是ip的地址配置;
通道類型
通信雙方的通道類型配對並不是可以隨意排列組合的,共有六種。(詳見《精通MQ》1.2.4 p24)
Sender/Receiver 是所有連接中最簡單、最常用的一種。Sender 是通道主動方,也是
消息發送方。
Requester/Server 也是常用的一種連接方式。Requester 是通道主動方,但通道連接
后,它作為消息接收方,Server 是消息發送方。
Server/Receiver 與 Sender/Receiver 類似,Server 是消息的發送方,也是連接的主動
方。與 Sender 定義類似,Server 定義中必須指定 CONNAME 參數。
Sender/Receiver 通道是最常見的通道配置方式, Sender 作為通道的發送方也是通道連接的主動發起方,Receiver 作為通道的接收方也是通道連接的被動監聽方。在 Receiver 端要配置並運行相應的監聽器。
配置示例
以下以Sender/Receiver 作為示例:
在以下的配置腳本中,通道連接兩個隊列管理器 QM1 和 QM2。其中,QM1為 Sender,
QM2 為 Receiver。在 QM1 上配置了遠程隊列 QR 和傳輸隊列 QX,其中 QR 指向隊列管理器 QM2 上的本地隊列 QL,且 QR 與 QX 對應,即凡是要放入 QR 隊列的消息,在加上傳輸消息頭后直接放入 QX 中等待發送。QM1 上配置 Sender 通道需要指定對方的通信參數 (IP地址和端口),而這些參數必須與 QM2 上的監聽器設置對應。Sender 通道與傳輸隊列 QX 對應,表示凡是在 QX 中等待發送的消息最終都可以由該通道送出。雙方通道必須同名。
在連接通道的時候,我們只需在 QM1 端啟動通道 start channel (C)。
開始干活:
1.建立隊列管理器
首先,我們在10.6.159.147 建立兩個隊列管理器QM1、QM2,然后運行起來;
/var/mqm/sh$crtmqm QM1
/var/mqm/sh$crtmqm QM2
/var/mqm/sh$strmqm QM1
/var/mqm/sh$strmqm QM2
2.建立隊列和通道
定義qm1的隊列和通道創建腳本:
/var/mqm/sh$vi define_qm1.tst
DEFINE QREMOTE (QR) RNAME (QL) RQMNAME (QM2) XMITQ (QX) REPLACE
DEFINE QLOCAL (QX) USAGE (XMITQ) REPLACE
DEFINE CHANNEL (C) CHLTYPE (SDR) TRPTYPE (TCP) CONNAME ('127.0.0.1 (1416)') XMITQ (QX) REPLACE
創建qm1的隊列和通道:
/var/mqm/sh$runmqsc QM1 < define_qm1.tst > out
查看out文件,確認沒有錯誤;
定義qm2的隊列和通道創建腳本:
/var/mqm/sh$vi define_qm2.tst
DEFINE QLOCAL (QL) REPLACE
DEFINE CHANNEL (C) CHLTYPE (RCVR) TRPTYPE (TCP) REPLACE
創建qm2的隊列和通道:
/var/mqm/sh$runmqsc QM2 < define_qm2.tst > out
查看out文件,確認沒有錯誤;
3.在qm2運行監聽器
在qm2上運行監聽器,監聽連接和發報請求;
/opt/mqm/bin$runmqlsr -m QM2 -t tcp -p 1416
(停止監聽器的命令:endmqlsr -m QM2)
4.運行通道
qm2的監聽器不啟動時,qm1上運行通道是無法啟動的,因為無法建立起連接;
/opt/mqm/bin$runmqchl -c C -m QM1
或者通過mqsc來運行通道:
runmqsc QM1
start channel (C)
5.發送測試報文
/var/mqm/sh$amqsput QR QM1
hello from qm1
6.接收測試報文
/var/mqm/sh$amqsget QL QM2
>hello from qm1
一次全部接受回來
7.不同的機器上
進一步,我們再另外一台機器上建立QM3隊列管理器:
/var/mqm/sh$crtmqm QM3
/var/mqm/sh$strmqm QM3
隊列的定義與qm2一樣,創建:
/var/mqm/sh$runmqsc QM3 < define_qm3.tst > out
運行監聽器:
/opt/mqm/bin$runmqlsr -m QM3 -t tcp -p 1416
qm1上的隊列需要修改下ip:
DEFINE QREMOTE (QR) RNAME (QL) RQMNAME (QM3) XMITQ (QX) REPLACE
DEFINE QLOCAL (QX) USAGE (XMITQ) REPLACE
DEFINE CHANNEL (C) CHLTYPE (SDR) TRPTYPE (TCP) CONNAME ('10.6.159.211 (1416)') XMITQ (QX) REPLACE
發送接收測試類似,沒問題;
over;
Posted by: 大CC | 12DEC,2013
博客:blog.me115.com
微博:新浪微博