通道(channel)編程
通道實際上是隊列管理器之間的一種點對點的通訊鏈接,消息在通道中只能單向流動。若是須要雙向交流,能夠創建一對通道,一個發送端和一個接受端口。從隊列管理器的角度出發通道安消息的流向能夠分爲輸入通道和輸出通道。經過配置對於放入本地傳輸隊列中的消息,隊列管理器會自動將其經過輸出通道發出,送入對方的遠程目標隊列。服務器
兩個隊列管理器之間能夠有多條通道負責傳輸不一樣的內容,這樣的設計每每是將不一樣的優先級消息錯開,運行於不一樣速率的網絡鏈接上。或者即使是全部通道都運行於相同的網絡物理鏈接上,也能夠將不一樣大小的消息傳送分開,以避免小數據傳送被大文件所堵塞。若是多條通道共享一條網絡物理鏈接,通道的速率之和受限與網絡速度。這樣能夠增長傳送的併發度但不能增長總體的傳送速度。網絡
在通道上能夠配置不一樣的通訊協議,這樣就使得編程接口與通訊協議無關。通道兩端的配置必須匹配,且名字相同,要否則沒法連通。隊列管理器之間的通訊是經過配置channel來進行鏈接的,通道兩側的隊列管理器對這個通道的相關參數應該能對應起來,一個通道只能用一種通訊協議,可是不一樣的通道能夠有不一樣的通訊協議。因此MQ中的通道對於傳輸消息來講有着舉重若輕的做用。併發
通道的類型(MQ通道類型屬性)約定了通訊雙方在鏈接握手協議中的主動和被動放以及應用消息的流向問題。ide
SDR sender 握手協議的主動方,在MQ中屬於消息的發送方spa
RCVR Receiver 握手協議的被動方,在MQ中屬於消息的接收方設計
SVR Server 在握手協議中能夠是主動方也能夠是被動方,在MQ中通常是消息的發送方blog
RQSTR Requester 在握手協議中能夠是主動方也能夠是被動方,在MQ中一般爲消息的接收方。接口
CLNTCONN Client Connection。在Client-Server鏈接時,定義客戶端鏈接定義表時使用,握手協議的主動方,消息的發送方。隊列
SVRCONN Server Connection,在Client-Server鏈接時,定義服務器端鏈接時使用,握手協議的被動方,消息的接收方
CLUSSDR Cluster Sender。 在集羣中發送配置信息和應用信息。握手協議的主動方,消息的發送方
CLUSRCVR Cluster Receiver,在集羣配置過程當中用來接受配置信息和應用信息。握手協議的接收方
通訊雙方的通道類型配對並非能夠隨意配列組合的,共有六種,如圖:
圖中的細線表示握手協議的主動鏈接方,粗線表示應用消息的流向。消息在全部的通道上都是單向傳送的。
Sender/Receiver 使全部連接中最簡單、最經常使用的一種。Sender是通道的主動方,也是消息的發送方。
Requester/Server 也是經常使用的一種鏈接方式。Requester是通道的主動方,但通道鏈接後它做爲消息的接收方,其實Server是消息的發送方。
Server/Receiver與Sender/Receiver相似,Server是消息的發送方,也是鏈接的主動方。與Sender定義相似,Server定義中必須指定CONNAME參數。
Sender/Requester 的鏈接過程稍微複雜一些,Requester首先與Sender鏈接,在通知對方鏈接參數後鏈接斷開。Sender進行反向鏈接,消息也是反向傳送的,這種反向的鏈接方式,稱爲Callback Connection。
Sender Connection/Receiver Connection 與 Sender/Receiver方式相同。用於Client\Server之間的MQI通道
Cluster Sender/Cluster Receiver與Sender/Receiver方式相同。用於集羣隊列管理器之間的鏈接。