4.3. 为点到点消息传递配置地址
点到点的消息传递是一个常见情况,其中由生产者发送的消息只有一个消费者。AMQP 和 JMS 消息生产者和消费者可以利用点到点消息传递队列,例如:为确保在点到点的方式中队列与一个接收消息的地址相关联,在您的代理配置中为给定的 address
项定义一个 anycast
路由类型。
当消息在一个使用 anycast
的地址上接收时,代理会找到与地址关联的队列,并将消息路由到它。然后,消费者可能会请求使用来自该队列的消息。如果多个消费者连接到同一队列,则消息会在消费者间平均分配,只要使用者可以平等地处理它们。
下图显示了点对点消息传递的示例。
图 4.1. 点到点的消息传递
4.3.1. 配置基本点对点消息传递
以下流程演示了如何使用单一队列为点到点消息传递配置地址。
流程
-
打开 &
lt;broker_instance_dir> /etc/broker.xml
配置文件。 使用一个
address
所选的queue
项环绕一个anycast
配置项。确保address
和queue
元素的name
属性的值都相同。例如:<configuration ...> <core ...> ... <address name="my.anycast.destination"> <anycast> <queue name="my.anycast.destination"/> </anycast> </address> </core> </configuration>
4.3.2. 为多个队列配置点对点消息传递
您可以在使用 anycast
路由类型的地址上定义多个队列。代理会在所有相关队列中平均分发发送到 anycast
地址的消息。通过指定一个 完全限定域名 (FQQN),您可以将客户端连接到特定的队列。如果多个消费者连接到同一队列,代理会在消费者之间均匀分发消息。
下图显示了使用两个队列的点对点消息传递的示例。
图 4.2. 使用两个队列的点到点消息传递
以下流程演示了如何为具有多个队列的地址配置点对点消息传递。
流程
-
打开 &
lt;broker_instance_dir> /etc/broker.xml
配置文件。 使用在
address
项中的queue
项环绕一个anycast
配置项。例如:<configuration ...> <core ...> ... <address name="my.anycast.destination"> <anycast> <queue name="q1"/> <queue name="q2"/> </anycast> </address> </core> </configuration>
如果您有一个配置,如上面在集群中的多个代理间镜像的配置,集群可以以不透明生产者和消费者的方式对点进行负载均衡。确切的行为取决于如何为集群配置消息负载均衡策略。
其他资源
有关以下内容的更多信息:
- 指定完全限定域名,请参阅 第 4.9 节 “指定完全限定的队列名称”。
- 如何为代理集群配置消息负载均衡,请参阅 第 14.1.1 节 “代理集群如何平衡消息负载”。