目录
RabbitMQ常用的交换器类型有fanout、direct和topic这三种,下面逐一说明。
1 fanout
fanout类型的交换器不处理路由键,它会把所有发送到该交换器的消息路由到所有与该交换器绑定的队列中。
2 direct
所有发送到direct类型的交换器的消息被转发到RoutingKey中指定的队列。消息传递时,RoutingKey必须完全匹配才会被队列接收,否则该消息会被抛弃。
3 topic
topic类型的交换器在匹配规则上进行了扩展,它与direct类型的交换器相似,也是将消息路由到 RoutingKey相匹配的队列中,但这里的匹配规则有些不同:
- RoutingKey为一个点号“.”分隔的字符串(被点号“.”分隔开的每一段独立的字符串成为一个单词),如“com.rabbitmq.client”、“java.util.concurrent”等等;
- BindingKey中可以存在两种特殊字符串“*”和“#”,用于做模糊匹配,其中“*”用于匹配一个单词,“#”用于匹配零个或多个单词。例如“log.#”能够匹配“log.info.oa”,“log.*”能够匹配“log.error”。