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,然後執行起來;
2.建立佇列和通道/var/mqm/sh$crtmqm qm1
/var/mqm/sh$crtmqm qm2
/var/mqm/sh$strmqm qm1
/var/mqm/sh$strmqm qm2
定義qm1的佇列和通道建立指令碼:
建立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
/var/mqm/sh$runmqsc qm1 < define_qm1.tst > out
檢視out檔案,確認沒有錯誤;
定義qm2的佇列和通道建立指令碼:
建立qm2的佇列和通道:/var/mqm/sh$vi define_qm2.tst
define qlocal (ql) replace
define channel (c) chltype (rcvr) trptype (tcp) replace
/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來執行通道:
5.傳送測試報文runmqsc qm1
start channel (c)
6.接收測試報文/var/mqm/sh$amqsput qr qm1
hello from qm1
一次全部接受回來/var/mqm/sh$amqsget ql qm2
>hello from qm1
7.不同的機器上
進一步,我們再另外一台機器上建立qm3佇列管理器:
qm1上的佇列需要修改下ip:/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
傳送接收測試類似,沒問題;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
SpringBoot配置屬性之MQ
衝擊年薪50w,助你高階python工程師 spring.activemq.broker url指定activemq broker的url,預設自動生成.spring.activemq.in memory是否是記憶體模式,預設為true.spring.activemq.password指定broke...
Windows環境下配置MQ
在windows上配置訊息中介軟體mq mq的基本概念和認識 mq,簡單地說就是訊息佇列,應用程式把訊息放進佇列裡,等待其他的應用程式或自己把它讀走,用於程序間通訊,並且可以像 socket 那樣用於不同主機間的程序間通訊。它有五個重要的概念 1 佇列管理器 用來管理佇列。2 佇列 用來存放訊息。分...
通道配置項 ChannelOption
channeloption的各種屬性在套接字選項中都有對應,下面簡單的總結一下channeloption的含義已及使用的場景。1 channeloption.so backlog channeloption.so backlog對應的是tcp ip協議listen函式中的backlog引數,函式li...