在讲 Exchange 的四种类型之前,你需要事先了解 RabbitMQ 中的基本概念,可以参考 RabbitMQ 中的核心概念
Exchange 的四种类型
- direct Exchange:直连交换机,该交换机会完全匹配 routing key (完全一致才算匹配),将消息转发到匹配的队列上
- topic Exchange:主题交换机,该交换机会模糊匹配 routing key,将消息转发到匹配的队列上
- name.* : 匹配以name.开头的,后面是任意不含.字符串,比如 name.abc
- name.# : 匹配以name.开头的,后面是任意字符串,比如 name.abc、name.abc.abc
- fanout Exchange: 广播交换机,该交换机不管 routing key 将消息转发到所有绑定到该交换机的队列上
- headers Exchange:headers类型的交换机分发消息不依赖routingKey,是使用发送消息时basicProperties对象中的headers来匹配的。headers是一个键值对类型,发送者发送消息时将这些键值对放到basicProperties对象中的headers字段中,队列绑定交换机时绑定一些键值对,当两者匹配时,队列就可以收到消息。匹配模式有两种,在队列绑定到交换机时用x-match来指定,all代表定义的多个键值对都要满足,而any则代码只要满足一个就可以了
其中 direct Exchange 、 topic Exchange 依赖 routing key ,而 fanout Exchange 、 headers Exchange 不依赖 routing key
比较常用的还是 direct Exchange 、 topic Exchange