RabbitMQ进阶, exchange的四种类型

  • 交换器类型

    在介绍这几种类型之前,先给大家说明一下相关的知识点:
    Exchange:交换器。,生产者将消息发送到 Exchange,由交换器将消息路由到一个或者多个队列中。
    在这里插入图片描述
    RoutingKey: 路由键。生产者将消息发给交换器的时候, 一般会指定一个 RoutingKey ,用来指定这个消息的路由规则,而这个 RoutingKey 需要与交换器类型和绑定键 (BindingKey)合使用才能最终生效。在发送消息的时候,其中需要的路由键是 RoutingKey
    Binding: 绑定。RabbitM 中通过绑定将交换器与队列关联起来,在绑定的时候一般会指定一 绑定键 BindingKey ,这样 RabbitMQ 就知 何正确 将消息路由 队列了,如图所示。在使用绑定的时候,其中需要的路由键是 BindingKey
    在这里插入图片描述

    RabbitMQ 常用的交换器类型有 fanout 、 direct、 topic 、 headers 这四种 。 AMQP 协议里还提
    到另外两种类型: System 和自定义,这里不予描述。对于这四种类型下面一一阐述。

fanout:它会把所有发送到该交换器的消息路由到所有与该交换器绑定的队列中。

direct:它会把消息路由到那些BindingKey和RoutingKey完全匹配的队列中。

在这里插入图片描述
topic:前面讲到 direct 类型的交换器路由规则是完全匹配 BindingKey 和 RoutingKey ,但是这种严
格的匹配方式在很多情况下不能满足实际业务的需求。topic类型的交换器在匹配规则上进行了扩展,它与 direct类型的交换器相似,也是将消息路由到BindingKey和RoutingKey相匹配的队列中,但这里的匹配规则有些不同。
在这里插入图片描述
headers:headers 类型的交换器不依赖于路由键的匹配规则来路由消息,而是根据发送的消息内容中
的 headers 属性进行匹配。在绑定队列和交换器时制定一组键值对 , 当发送消息到交换器时,
RabbitMQ 会获取到该消息的 headers (也是一个键值对的形式) ,对比其中的键值对是否完全
匹配队列和交换器绑定时指定的键值对,如果完全匹配则消息会路由到该队列,否则不会路由
到该队列 。 headers 类型的交换器性能会很差,而且也不实用,基本上不会看到它的存在。

相关参考:<RabbitMQ实战指南>
源码在此

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章