通道
消息通道(Message channels)
消息通道是一种提供从一个队列管理器到另一个队列管理器的通信路径。消息通道用在分布式的队列把消息从一个队列管理器发送到另一个队列管理器。它们使应用程序屏蔽了底层的通信协议。队列管理器可能存在同种或异种平台之间。为了实现队列管理器之间的通信,您必需在一个队列管理器中定义一个发送消息的通道对象,在另一个队列管理器中定义一个接收消息的通道对象。消息通道是一个单向链接。它通过消息通道代理(message channel agents)把两个队列管理器连接起来。如图所示:
不要和MQI通道(MQI channel)通道混淆。MQI通道有两种类型,分别是服务器连接(server-connection)和客户器连接(client-connection)。
消息通道分类
消息通道的定义可以分为以下6种类型:
l 发送通道(Sender)
l 接收通道(Receiver)
l 服务器通道(Server)
l 请求器通道(Requester)
l 群集发送通道(Cluster sender)
l 群集接收通道(Cluster receiver)
消息通道的组合形式
如果要在队列管理之间实现消息传输,必须要在两个队列管理器上都要定义相应的通道。发送方和接收方通道的组合形式如下:
l 发送通道-接收通道(Sender-receiver )
l 请求器通道-服务器通道(Requester-server)
l 请求器通道-发送通道(Requester-sender (callback) )
l 服务器通道-接收通道(Server-receiver )
l 群集发送通道-群集接收通道(Cluster sender –cluster receiver)
注意:通道的组合形式有5种形式,每种组合方式是固定的,用户不能随意组合。每对通道的名称必需相同例如:在发送通道-接收通道组合中,发送通道名和接收通道名必须一致,否则通道将无法启动。
消息通道用法
发送通道-接收通道(Sender-receiver)
用法:由一个系统的发送通道来启动通道,以便它可以发送消息到另一个系统。发送通道向接收通道发送启动请求。发送通道从传输队列发送消息到接收通道。接收通道把消息放到目标队列。
请求器通道-服务器通道(Requester-server
用法:
(1)由一个系统中的请求器通道来启动通道,以便它能从另一个系统接收到消息。 请求器通道向通道另一端的服务器通道发送请求来启动。服务器通道从传输队列把消息发送到请求器通道。
(2) 服务器通道也能启动通道,并发送消息到请求器, 但这仅应用于完全意义的服务器通道, 也即服务器通道定义中应含有对方的连接名。一个完全意义的服务器通道可以由请求器通道启动, 也可以发起和服务器通道的通讯。
(3)最好不要手工去停止Server和Request通道,而是依靠Server通道的Discint的属性来停止通道。
请求器通道-发送通道(Requester-sender (callback))
用法:请求器通道启动通道,发送通道终止这个会话。 发送通道然后依据它的通道定义中的信息(称为 callback)来重新启动会话。它把消息从传输队列发送给请求器通道。最好不要手工去停止Sender和Request通道,而是依靠Sender通道的Discint属性来停止通道。
服务器通道-接收通道(Server-receiver)
用法:类似于发送通道-接收通道,但仅应用在完全意义的服务器通道。也即服务器通道定义应含有对方的连接名,通道的启动方是服务器通道。
群集发送通道(Cluster sender)
用法:在一个群集中,每个队列管理器都有一个群集发送通道,通过它可以把送群集信息发送到其中一个队列管理器资源管理器。队列管理器通过这个通道也可以把消息发送到其他的队列管理器。
群集接收通道(cluster receiver)
功能:在一个群集中,每一个队列管理器都有一个群集接收通道。通过这个通道可以接收数据消息和关于群集的消息。
MQI通道
MQI通道是WebSphere MQ 客户端和服务器上的队列管理器的通信的通道。当客户端应用程序发出MQCONN或MQCONNX调用时,才开始建立连接。它是一个双向的通道,可以负责发送和接收,被用作MQI调用的传送和响应。如图所示:
一个MQI通道可以把一个客户端连接到单个队列管理器,MQI通道有两种类型,它们定义了双向的MQI通道。
客户端连接通道(Client-connectionchannel)
这种类型为WebSphereMQ 的客户端所使用。
服务器连接通道(Server-connectionchannel)
这种类型为运行队列管理器的服务器端所使用,运行在WebSphere MQ 客户端的应用程序将使用这种通道进行通信。
比较消息通道和MQI通道
消息通道与MQI通道之间的区别可以从两方面进行比较:
l MQI通道是双向的:一个MQI通道可以被用来发送请求,也可用来接收响应。而消息通道则只能单向数据通信。如果要在两个队列管理器之间实现双向通信,那么需要定义两个消息通道,一个用来实现数据的发送,另一个用来实现数据的接收。
l MQI通道的通信是同步的:当一个MQI请求从客户端发送服务器端时,WebSphere MQ的客户端在发送下一个请求之间必须要等待来自服务器端的响应。而消息通道,在通道中传输的消息是与时间无关的。大量的消息可以从一个队列管理器发送到另一个队列管理器,发送队列管理器不必等待来自接收队列管理器的任何响应。