4.5. 为点到点和发布-订阅消息传递配置地址
您还可以使用点对点 和发布 订阅语义配置地址。
通常不建议将地址配置为同时使用点到点和发布订阅模式。但是,如果需要,它可能会有用。例如,一个名为 orders
的 JMS 队列,以及名为 order
的 JMS 主题。不同的路由类型使地址似乎因客户端连接而异。在这种情况下,由 JMS 队列生成者发送的消息使用 anycast
路由类型。JMS 主题制作者发送的消息使用 多播路由
类型。当 JMS 主题消费者连接到代理时,它会附加到自己的订阅队列。但是,JMS 队列消费者附加到任何广播 队列
。
下图展示了点对点以及一起使用的发布-订阅消息示例。
以下流程演示了如何为点对点和发布订阅消息传递配置地址。
这种情境的行为取决于所使用的协议。对于 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>
注意通常,代理根据需要创建订阅队列,因此无需列出
多播
元素内的特定队列元素。