4.10. 配置分片队列
在队列间处理消息的常用模式,其中只有部分顺序是使用 队列分片。这意味着您可以定义一个作为单一逻辑队列的 anycast
地址,但它由多个底层物理队列支持。
流程
-
打开 &
lt;broker_instance_dir> /etc/broker.xml
配置文件。 添加一个
address
元素并设置name
属性。例如:<configuration ...> <core ...> ... <addresses> <address name="my.sharded.address"></address> </addresses> </core> </configuration>
添加
anycast
路由类型,并包含所需的分片队列数量。在以下示例中,队列q1
,q2
, 和q3
添加为anycast
的目的地。<configuration ...> <core ...> ... <addresses> <address name="my.sharded.address"> <anycast> <queue name="q1" /> <queue name="q2" /> <queue name="q3" /> </anycast> </address> </addresses> </core> </configuration>
根据上述配置,发送到 my.sharded.address
的消息会在 q1
, q2
和 q3
之间均匀分布。在使用完全限定域名(FQQN)时,客户端可以直接连接到特定的物理队列,并接收仅发送到该特定队列的消息。
要将特定消息绑定到特定的队列,客户端可以为每个消息指定一个消息组。代理将消息分组到同一队列,一个消费者全部处理它们。
其他资源
有关以下内容的更多信息:
- 完全限定的队列名称,请参阅 第 4.9 节 “指定完全限定的队列名称”
- 消息分组,请参阅 AMQ Core Protocol JMS 文档中的使用消息组。https://docs.redhat.com/en/documentation/red_hat_amq_core_protocol_jms/7.11/html-single/using_amq_core_protocol_jms/index.html#using_message_groups