我正在阅读一些有关消息通道和消息队列之间差异的信息,
我知道该通道用于连接队列 经理而不是排队。
因此,通道可以将消息检索/发送到不同的队列或仅发送到特定的队列吗?但是,当生产者需要将消息放入队列时,它指定队列的名称和队列管理器,但是如果不需要该信息由生产者指定,则通道知道该信息,对吗?
何时具有发布/订阅消息传递样式,是否总是使用发送者/接收者通道?
答案 0 :(得分:0)
消息通道将两个队列管理器连接在一起。有各种不同的通道类型对,它们的行为略有不同,但是从您的问题的角度来看,从一个队列管理器发送到另一个队列管理器的所有这些类型都是相同的。对于此答案的其余部分,我将使用SENDER-RECEIVER对。
SENDER频道将始终从一个队列(传输队列)中读取。它在SENDER通道定义上命名。在成功将消息传输到目标队列管理器之前,传输队列是消息的安全存储区域。
连接到发送队列管理器的应用程序可以将消息放入目标队列管理器上的许多不同的队列中,并且所有这些消息最初都将存储在传输队列中。
这是可能的,因为当队列管理器驻留在传输队列上时,它在消息的前面添加了特殊的头(称为传输头-MQXQH)。该标头包含消息生产者最初提供的目标队列名称和目标队列管理器名称。频道不知道此信息,由生产者提供。
一旦通道已将消息通过网络移动到目标队列管理器,则RECEIVER通道将删除传输头并使用其中的数据(队列名称和队列管理器名称)将消息放入适当的队列。
通过这种方式,单个通道对可以将消息传递到许多不同的队列。