RabbitMQ之交换机

        RabbitMQ 的交换机(Exchange)是消息传递系统中的核心组件之一,负责接收生产者发送的消息,并根据规则将消息路由到一个或多个队列。RabbitMQ 提供了以下四种不同类型的交换机来实现不同的路由机制

         一、FanOut Exchange(扇形交换机)

        扇形交换机就像村口的大喇叭一样,把消息广播到所有的村民的耳朵(队列)中,他不会考虑你是谁(路由键routingKey),所有与该交换机绑定的队列都会收到消息,如:发布/订阅场景(例如在聊天室把你的消息发送给所有用户)。

        二、Direct Exchange (直连交换机)

        直连交换机与广播的扇形交换机不同,他会根据routingKey和binding Key精准的匹配队列,每一条消息都会携带一个routingKey(就像是你送货上门的快递一样,每一个快递都有自己要去的门牌号,而你的门牌号就是binding Key),只有完全匹配到routingKey才会接收到信息。当然如果你所有的bindingKey都设置成了一样的字符(那为什么不用fanout呢(doge))

        三、Topic Exchange(主题交换机)

        他更像是前两者的结合体,因为他使用了通配符* #,支持了模糊查询,灵活度变得特别高,也让他更适合于按主题和类别分发消息,就像生产者可以把新闻定义成news.sports.NBA,news.sports.CBA,news.China....消费者就可以通过通配符订阅相关主题。

        这里再说一下两个通配符的作用

  •    *(星号):匹配一个单词。例如,"logs.*.db" 匹配 "logs.error.db" 和 "logs.info.db"。
  •    #(井号):匹配零个或多个单词。例如,"logs.#" 可以匹配 "logs.error.db"、"logs.warning" 等所有以 "logs" 开头的路由键。

        四、Headers Exchange(头交换机)

        Headers Exchange(头交换机) 基于消息头(headers)来路由消息,而不是依赖路由键。这种交换机允许消息根据头属性进行匹配,提供了一种更加灵活和细粒度的路由方式。

        工作机制

        消息头属性:生产者在发送消息时可以在消息头中添加多个键值对(属性),而 Headers Exchange 可以根据这些键值对进行匹配。

        匹配条件:消息者在绑定队列时,可以指定需要的头属性,可以设置匹配模式

  •  all:要求所有指定头属性都匹配的时候,消息才会路由到该队列
  •  any:只要任意一个头属性匹配,就会路由到该队列。

       适用场景:

        1. 多属性过滤:如果消息的路由决策需要基于多个条件(例如用户的年龄、地区、用户类型等),Headers Exchange 可以帮助精确控制消息流向。

        2. 动态路由:头交换机可以给予任何属性组合进行匹配,不需要固定的routingKey

本文仅是一个小白在初学rabbitmq后的总结以及自己的理解,希望大佬多多指点!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值