Topic
在上一节的示例中,我们使用 direct 类型的交换机,使得消费者可以自由选择接收各种错误级别的日志消息。
但是,direct 这种完全匹配的方式仍然有一定的局限性,无法满足实际的业务场景需要。direct 无法基于多重标准进行路由匹配。
比如,假设我们既要根据日志消息的错误级别来订阅消息,又要根据日志消息的设备来源来订阅消息。
为了实现这一功能,就需要用到更为灵活的交换机。
下面我们来介绍 topic 类型的交换机。
topic exchange
topic 交换机与 direct 交换机类似,也是将消息路由给 binding_key 与 routing_key 相匹配的队列。 只不过,topic 交换机不是完全匹配,它的匹配规则更加灵活,支持模糊匹配。
topic 类型的交换机有如下约定:
- routing_key 是由 . 号分隔的多个单词组成的字符串,长度不得超过 255 字节,如
quick.orange.rabbit
。 - 上述约定同样适用于 binding_key。
- binding_key 还支持两个特殊字符 * 和 #,用于模糊匹配。
*(星号)只能匹配一个单词。
#(井号)可以匹配零个或多个单词。