MQ通道配置

2021-09-06 13:04:28 字數 3334 閱讀 4112

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

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...