4.5. 为点到点和发布订阅消息传递配置地址
您还可以使用点到点 和发布 订阅语义配置地址。
通常不建议将地址配置为同时使用点到点和发布订阅模式。但是,如果需要,它可能会有用。例如,一个名为 orders
的 JMS 队列,以及名为 order
的 JMS 主题。不同的路由类型使地址显示为不同的客户端连接。在这种情况下,由 JMS 队列生成者发送的消息使用 anycast
路由类型。JMS 主题制作者发送的消息使用 multicast
路由类型。当 JMS 主题消费者连接到代理时,它将连接到自己的订阅队列。但是,一个 JMS 队列消费者附加到 anycast
队列。
下图显示了点到点和发布订阅消息传递的示例。
图 4.4. 点到点和发布订阅消息传递
以下流程演示了如何为点到点和发布订阅消息传递配置地址。
这种情境的行为取决于所使用的协议。对于 JMS,主题和队列生产者和消费者之间有一个明显的区别,即逻辑简单。AMQP 等其他协议不会区分此区别。通过 AMQP 发送的消息以 anycast
和 multicast
路由,消费者默认为 anycast
。更多信息请参阅 第 3 章 在网络连接中配置消息传递协议。
流程
-
打开 &
lt;broker_instance_dir> /etc/broker.xml
配置文件。 使用在
address
项中的queue
项环绕一个anycast
配置项。例如:<configuration ...> <core ...> ... <address name="orders"> <anycast> <queue name="orders"/> </anycast> </address> </core> </configuration>
向地址添加一个空的
multicast
配置元素。<configuration ...> <core ...> ... <address name="orders"> <anycast> <queue name="orders"/> </anycast> <multicast/> </address> </core> </configuration>
注意通常,代理会根据需求创建订阅队列,因此不需要列出
multicast
元素中的特定队列元素。