三、交换器、路由键、绑定
Exchange:交换器。
我们暂时可以理解成生产者将消息投递到队列中,实际上这个在 RabbitMQ 中不会发生。真实情况是,生产者将消息发送到 Exchange(交换器,通常也可以用大写的“X”来表示),由交换器将消息路由到一个或者多个队列中。如果路由不到,或许会返回给生产者,或许直接丢弃。
RabbitMQ 中的交换器有四种类型,不同的类型有着不同的路由策略。
RabbitMQ 常用的交换器类型有 fanout、direct、topic、headers 这四种。
- fanout :它会把所有发送到该交换器的消息路由到所有与该交换器绑定的队列中。
- direct : direct 类型的交换器路由规则也很简单,它会把消息路由到那些 BindingKey 和 RoutingKey完全匹配的队列中。
- topic:前面讲到 direct 类型的交换器路由规则是完全匹配 BindingKey 和 RoutingKey,但是这种严格的匹配方式在很多情况下不能满足实际业务的需求。topic 类型的交换器在匹配规则上进行了扩展,它与 direct 类型的交换器相似,也是将消息路由到 BindingKey 和 RoutingKey 相匹配的队列中,但这里的匹配规则有些不同,它约定:
- RoutingKey 为一个点号“.”分隔的字符串(被点号“.”分隔开的每一段独立的字符串称为一个单词),如“com.rabbitmq.client”、“java.util.concurrent”、“com.hidden.client”;
- Bindi