RabbitMQ Exchange类型

RabbitMQ常用的交换器类型有: fanout 、 direct 、 topic 、 headers 四种。

1. Fanout

会把所有发送到该交换器的消息路由到所有与该交换器绑定的队列中,如图:
RabbitMQ Exchange类型

2. Direct

direct类型的交换器路由规则很简单,它会把消息路由到那些BindingKey和RoutingKey完全匹配的 队列中,如下图:
RabbitMQ Exchange类型

3. Topic

topic类型的交换器在direct匹配规则上进行了扩展,也是将消息路由到BindingKey和RoutingKey 相匹配的队列中,这里的匹配规则稍微不同,它约定:BindingKey和RoutingKey一样都是由".“分隔的字符串;BindingKey中可以存在两种特殊字符“*”和 “#”,用于模糊匹配,其中” * “用于匹配一个单词,”#"用于匹配多个单词(可以是0个)。
RabbitMQ Exchange类型

4. Headers

headers类型的交换器不依赖于路由键的匹配规则来路由信息,而是根据发送的消息内容中的 headers属性进行匹配。在绑定队列和交换器时指定一组键值对,当发送的消息到交换器时, RabbitMQ会获取到该消息的headers,对比其中的键值对是否完全匹配队列和交换器绑定时指定的键 值对,如果匹配,消息就会路由到该队列。headers类型的交换器性能很差,不实用。