通道可以将消息发送到不同的队列吗?

Can channels send a message to different queues?

我正在阅读一些关于消息通道和消息队列之间区别的信息,

I understand that the channel is used for connecting to a queue manager and not to a queue.

所以通道可以 retrieve/send 消息到不同的队列或只是一个特定的队列?但是当生产者需要将消息放入队列时,它会指定队列的名称和队列管理器,但是如果生产者不需要指定该信息,那么通道就知道该信息,对吧?

当具有 Publish/Subscribe 消息传递样式时,总是使用 sender/receiver 通道?

一个 消息通道 将两个 queue 经理连接在一起。有各种不同的渠道类型对,它们的行为略有不同,但是从您的问题的角度来看,从一个 queue 经理发送到另一个经理的所有那些类型都是相同的。对于这个答案的其余部分,我将使用 SENDER-RECEIVER 对。

SENDER 通道将始终 从一个queue - 传输queue 中读取。它在 SENDER 通道定义中命名。传输 queue 是消息的安全存储区域,直到它成功传输到目标 queue 管理器。

连接到发送 queue 管理器的应用程序可以将消息发送到目标 queue 管理器上的许多不同 queues,并且它们最初都将存储在传输中queue.

这是可能的,因为 queue 管理器在消息驻留在传输 queue。此 header 包含消息生成者最初提供的目标 queue 名称和目标 queue 管理器名称。渠道不知道这个信息,由制作方提供。

一旦通道通过网络将消息移动到目标 queue 管理器,RECEIVER 通道将删除传输 header 并使用其中的数据,queue 名称和 queue 经理姓名,将消息发送到适当的 queue.

通过这种方式,单个通道对可以将消息传递给许多不同的 queue。