MQ通道配置


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
微博:新浪微博


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM