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