发送者选择的分发
AMQP 发布者可以选择发送带有多个路由键的消息。在路由过程中,RabbitMQ 将考虑消息头中提供的所有路由键。
例如,如果 AMQP 发布者向默认交换机发送带有多个路由键的消息,则每个路由键代表一个队列名称,RabbitMQ 会将消息路由到所有指定的队列。
在另一个示例中,如果 AMQP 发布者向主题交换机发送带有多个路由键的消息,则每个路由键代表一个主题。
在消息中包含多个路由键可以将其路由到更多队列,具体取决于队列如何绑定到交换机。如果消息被路由到至少一个队列并且所有队列都确认接收,则 RabbitMQ 会以accepted结果结算消息。换句话说,即使只有一部分路由键成功路由,RabbitMQ 也会接受该消息。
AMQP 1.0
要在 AMQP 1.0 中使用多个路由键,发布者需要设置一个消息注解,键为 x-cc
,值为 字符串的列表。列表中的每个字符串都代表一个额外的路由键。
这些 “CC” 路由键除了AMQP 地址字符串中提供的路由键之外,还会被使用。
AMQP 0.9.1
要在 AMQP 0.9.1 中使用多个路由键,发布者需要设置 “CC” 和 “BCC” 标头键。这类似于在电子邮件的 “CC” 或 “BCC” 字段中指定多个收件人。“CC” 和 “BCC” 的值必须是字符串数组(longstr
值)。
消息将使用作为参数提供给 basic.publish
方法的路由键以及 “CC” 和 “BCC” 标头中提供的路由键进行路由。“BCC” 键和值将在交付前从消息中删除,以确保消费者之间具有一定程度的机密性。