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