MQ通道配置示例 4種
MQ通道配置示例(1):Sender/Receiver
http://blog.csdn.net/qingsong3333/article/details/51463222
Sender/Receiver 通道是最常見的通道配置方式,Sender 作為通道的傳送方也是通道連線的主動發起方,Receiver 作為通道的接收方也是通道連線的被動監聽方。在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(Sender) QM2(Receiver)
------------------ ------------------
遠端佇列:QR
----通道C--- 本地佇列QL
傳輸佇列:QX
127.0.0.1(1416)
------------------ ------------------
STEP1: 建立Sender佇列管理器以及佇列
SESSION 1:
//建立並啟動佇列管理器MQ1
C:\windows\system32>CRTMQM QM1
C:\windows\system32>STRMQM QM1
//建立遠端佇列QR、傳輸佇列QX以及通道C (引數什麼意思?如果改成目標機器情況如何)
C:\windows\system32>RUNMQSC QM1
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
END
=================================
STEP2: 建立Receiver佇列管理器以及佇列,並啟動監聽
SESSION 2:
同樣,建立對應的佇列管理器QM2以及本地佇列QL和通道C
mqm@ora10g:~> crtmqm QM2
mqm@ora10g:~> strmqm QM2
C:\windows\system32>RUNMQSC QM2
DEFINE QLOCAL(QL) REPLACE
DEFINE CHANNEL(C) CHLTYPE(RCVR) TRPTYPE(TCP) REPLACE
END
//遠端的佇列管理器至少有一個 TCP/IP Listener,
C:\windows\system32>start runmqlsr -m QM2 -t tcp -p 1416
linux直接執行:mqm@ora10g:~> runmqlsr -m QM2 -t tcp -p 1416
執行完命令沒有退出提示;
C:\windows\system32>netstat -an | find /i "1416"
TCP 0.0.0.0:1416 0.0.0.0:0 LISTENING
TCP [::]:1416 [::]:0 LISTENING
linux 如下顯示
ora10g:/opt/mqm # netstat -an|grep 1416
tcp 0 0 :::1416 :::* LISTEN
=============================================
STEP3:啟動通道,開始傳送和接收訊息:
SESSION 1:
C:\windows\system32>RUNMQSC QM1
start channel(C)
END
C:\windows\system32>amqsput QR QM1
linux 需要新增路徑,否則找不到該命令;mqm@ora10g:~> export PATH=$PATH:/opt/mqm/samp/bin
mqm@ora10g:~> amqsput QR QM1
Sample AMQSPUT0 start
target queue is QR
ARe you there?
Coool
byeBye
Sample AMQSPUT0 end
與此同時
SESSION 2:
C:\windows\system32>amqsget QL QM2
Sample AMQSGET0 start
message <ARe you there?>
message <Coool>
message <byeBye>
no more messages
Sample AMQSGET0 end
MQ通道配置示例(2):Server/Requester
http://blog.csdn.net/qingsong3333/article/details/51463612
疑問:該測試,建多個佇列進行測試,或者刪掉重來;
Server/Requester 通道也是一種較常見的通道配置方式,從訊息流向來看,Server 作為訊息的傳送方,Requester 作為訊息的接收方。但是從連線方式來看,Requester 卻是連線的主動方,Server 是被動方(監聽)。這種模式常用於動態IP 地址的環境中,Server是靜態IP 地址的伺服器,Requester 的機器上網後自動分配到一個IP 地址,所以是動態的,由Requester 發起
連線後接收資料。在本例中,由QM2 (Requester) 啟動通道start channel (C)。
//備註:誰發起連線,誰來啟動channel,並且建立Channel的時候指定CONNAME,對方來啟動監聽。
QM1(Server) QM2(Requester)
------------------- ---------------------------
遠端佇列:QR
--------通道C--------- 本地佇列:QL
傳輸佇列:QX
127.0.0.1(1415)
------------------- ----------------------------
STEP1: 建立Sender佇列管理器以及佇列
SESSION 1:
//建立並啟動佇列管理器MQ1
C:\windows\system32>CRTMQM QM1
C:\windows\system32>STRMQM QM1
//建立遠端佇列QR、傳輸佇列QX以及通道C,並啟動監聽
C:\windows\system32>RUNMQSC QM1
DEFINE QREMOTE(QR) RNAME(QL) RQMNAME(QM2) XMITQ(QX) REPLACE
DEFINE QLOCAL(QX) USAGE(XMITQ) REPLACE
DEFINE CHANNEL(C) CHLTYPE(SVR) TRPTYPE(TCP) XMITQ(QX) REPLACE
END
=================================
//啟動監聽
C:\windows\system32>start runmqlsr -m QM1 -t tcp -p 1415
C:\windows\system32>netstat -an | find /i "1415"
TCP 0.0.0.0:1415 0.0.0.0:0 LISTENING
TCP [::]:1415 [::]:0 LISTENING
STEP2: 建立Receiver佇列管理器以及佇列
SESSION 2:
同樣,建立對應的佇列管理器QM2以及本地佇列QL和通道C
C:\windows\system32>CRTMQM QM2
C:\windows\system32>STRMQM QM2
C:\windows\system32>RUNMQSC QM2
DEFINE QLOCAL(QL) REPLACE
DEFINE CHANNEL(C) CHLTYPE(RQSTR) TRPTYPE(TCP) CONNAME('127.0.0.1(1415)') REPLACE
END
=============================================
STEP3:啟動通道,開始傳送和接收訊息:
SESSION 2:
C:\windows\system32>RUNMQSC QM2
start channel(C)
END
SESSION 1:
C:\windows\system32>amqsput QR QM1
Sample AMQSPUT0 start
target queue is QR
11111111
222222222222
Sample AMQSPUT0 end
與此同時
SESSION 2:
C:\windows\system32>amqsget QL QM2
Sample AMQSGET0 start
message <11111111>
message <222222222222>
no more messages
Sample AMQSGET0 end
MQ通道配置示例(3):Sender/Requester
http://blog.csdn.net/qingsong3333/article/details/51465100
Sender/Requester 的連線過程稍微複雜一些,Requester 首先與Sender 連線,在通知對方連線引數後連線斷開。Sender 進行反向連線,訊息也是反向傳送的,即由Sender 傳給Requester。這種反向連線的方式,稱為回撥連線 (Callback Connection)。這種模式也常用於做雙向驗證,即雙方必須都要知道對方的通訊引數才能完成回撥連線。這種情況下,啟動通道的仍然是訊息的發起方,即Requester
架構圖如下:
QM1(Sender) QM2(Requester)
----------------- --------------------------
遠端佇列:QR
-----通道C------ 本地佇列:QL
傳輸佇列:QX
127.0.0.1(1415) 127.0.0.1(1416)
------------------ --------------------------
STEP1: 建立Sender佇列管理器以及佇列
SESSION 1:
//建立並啟動佇列管理器MQ1
C:\windows\system32>CRTMQM QM1
C:\windows\system32>STRMQM QM1
//建立遠端佇列QR、傳輸佇列QX以及通道C,並啟動監聽
C:\windows\system32>RUNMQSC QM1
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
END
=================================
//啟動監聽
C:\windows\system32>start runmqlsr -m QM1 -t tcp -p 1415
C:\windows\system32>netstat -an | find /i "1415"
TCP 0.0.0.0:1415 0.0.0.0:0 LISTENING
TCP [::]:1415 [::]:0 LISTENING
STEP2: 建立Receiver佇列管理器以及佇列
SESSION 2:
同樣,建立對應的佇列管理器QM2以及本地佇列QL和通道C
C:\windows\system32>CRTMQM QM2
C:\windows\system32>STRMQM QM2
C:\windows\system32>RUNMQSC QM2
DEFINE QLOCAL(QL) REPLACE
DEFINE CHANNEL(C) CHLTYPE(RQSTR) TRPTYPE(TCP) CONNAME('127.0.0.1(1415)') REPLACE
END
//啟動監聽
C:\windows\system32>start runmqlsr -m QM2 -t tcp -p 1416
C:\windows\system32>netstat -an | find /i "1416"
TCP 0.0.0.0:1416 0.0.0.0:0 LISTENING
TCP [::]:1416 [::]:0 LISTENING
=============================================
STEP3:啟動通道,開始傳送和接收訊息:
SESSION 2:
C:\windows\system32>runmqchl -m QM2 -c C
5724-H72 (C) Copyright IBM Corp. 1994, 2009. ALL RIGHTS RESERVED.
2016/5/20 23:38:52 正在啟動通道“C'。
2016/5/20 23:38:53 通道“C”正常結束。
SESSION 1:
C:\Windows\system32>amqsput QR QM1
Sample AMQSPUT0 start
target queue is QR
DSLFAJKLFD
JJJJLLLLLL
Sample AMQSPUT0 end
與此同時
SESSION 2:
C:\windows\system32>amqsget QL QM2
Sample AMQSGET0 start
message <DSLFAJKLFD>
message <JJJJLLLLLL>
no more messages
Sample AMQSGET0 end
MQ通道配置示例(4):三級跳 (Multi-hopping)
http://blog.csdn.net/qingsong3333/article/details/51469755
QM1 要傳送訊息去QM3,訊息在QM2 被自動轉發,而不被應用訊息處理,即通常所說的訊息在QM2 不落地。
QM1 上的遠端佇列QR_QM3 定義了目標佇列管理器為QM3,目標佇列為QL_QM3。
訊息透過指定的傳輸佇列QM2 路由到QM2 上後,試圖尋找QM3,結果找到名為QM3的傳輸佇列,訊息進一步路由到佇列管理器QM3 上,最終放入正確的目標佇列。
架構示意圖:
QM1 QM2 QM3
--------------- --------- ------------
QR_QM3 QM2 ----> QM3 ----> QL_QM3
Sender Receiver/Sender Receiver
127.0.0.1(1415) 127.0.0.1(1416)
-------------- ----------- -----------------
建立相關佇列管理器及佇列:
------------------------
session1:
CRTMQM QM1
STRMQM QM1
RUNMQSC QM1
DEFINE QREMOTE(QR_QM3) RNAME(QL_QM3) RQMNAME(QM3) XMITQ(QM2) REPLACE
DEFINE QLOCAL(QM2) USAGE (XMITQ) REPLACE
DEFINE CHANNEL (C.QM1.QM2) CHLTYPE(SDR) TRPTYPE(TCP) CONNAME('127.0.0.1(1415)') XMITQ(QM2) REPLACE
END
session2:
CRTMQM QM2
STRMQM QM2
RUNMQSC QM2
DEFINE QLOCAL(QM3) USAGE(XMITQ) REPLACE
DEFINE CHANNEL(C.QM1.QM2) CHLTYPE(RCVR) TRPTYPE(TCP) REPLACE
DEFINE CHANNEL(C.QM2.QM3) CHLTYPE(SDR) TRPTYPE(TCP) CONNAME('127.0.0.1(1416)') XMITQ(QM3) REPLACE
END
session3:
CRTMQM QM3
STRMQM QM3
RUNMQSC QM3
DEFINE QLOCAL(QL_QM3) REPLACE
DEFINE CHANNEL(C.QM2.QM3) CHLTYPE(RCVR) TRPTYPE(TCP) REPLACE
END
啟動監聽:
-------
session2:
start runmqlsr -m QM2 -t tcp -p 1415
session3:
start runmqlsr -m QM3 -t tcp -p 1416
啟動通道:
-------
session1:
RUNMQSC QM1
start channel(C.QM1.QM2)
END
session2:
RUNMQSC QM2
start channel(C.QM2.QM3)
END
傳送訊息:
--------
session1:
amqsput QR_QM3 QM1
session3:
amqsget QL_QM3 QM3
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29519108/viewspace-2138765/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- log4j配置檔案示例
- Gulp4 Koa專案簡單配置示例
- Java NIO4:Socket通道Java
- 一個4節點Hadoop叢集的配置示例Hadoop
- RMAN配置示例
- 不可或缺的十種WebSphere MQ SupportPacWebMQ
- Log4j2 + Maven的配置檔案示例詳解Maven
- ABAP程式示例4
- 配置防火牆示例防火牆
- 想在jboss中配置IBM的MQ的JNDIIBMMQ
- 主流的訊息佇列MQ比較,詳解MQ的4類應用場景佇列MQ
- MQMQ
- HBase + Kerberos 配置示例(二)ROS
- HBase + Kerberos 配置示例(一)ROS
- nginx 使用webrman配置示例NginxWeb
- Rocket MQ傳送訊息的三種方式初析MQ
- Log4Net配置詳解及輸出自定義訊息類示例
- 2、Spring4之Bean的兩種配置方式SpringBean
- nginx + PHP-fpm 配置示例NginxPHP
- Nginx配置檔案示例解析Nginx
- redhat 5 dns配置示例一RedhatDNS
- JVM 調優示例和配置JVM
- 任務:訊息: 不可或缺的十種 WebSphere MQ SupportPacWebMQ
- log4j使用示例 (轉)
- typescript openai gtp-4o 示例TypeScriptOpenAI
- springcloud(六):配置中心git示例SpringGCCloudGit
- redhat network網路卡配置示例Redhat
- hp unix dp軟體配置示例
- .NET Core常用配置檔案示例
- [轉]MQ詳解以及各種訊息中介軟體說明MQ
- 支援多種通道的 laravel 異常監控通知元件Laravel元件
- 分散式系統中處理引數配置的 4 種方案分散式
- 分散式系統中處理引數配置的4種方案分散式
- javaNIO實戰4----> java NIO的通道Channel實戰Java
- EJB與MQ(IBM MQ6)的比較MQIBM
- [MQ]QueuedComponent設計時瞭解事項[MQ] (轉)MQ
- 這篇文章,專治MQ中介軟體各種疑難雜症MQ
- 刀片(sda)Ubuntu preseed配置檔案示例Ubuntu