通道(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方式相同。用于集群队列管理器之间的链接。