消息队列交换机
Exchange 是什么?
接收消息并按规则路由到队列,本身不存消息
类比:邮局的分拣中心,按地址把信分到不同邮袋
它是什么
生产者从不直接把消息发给队列,而是发给 Exchange,由 Exchange 根据类型和绑定规则决定投递到哪些队列。这是 RabbitMQ 路由灵活的根本原因。
四种类型
选哪种类型,取决于你想怎么表达「这条消息该给谁」。
- Direct:routingKey 完全相等才投递,最常用
- Fanout:忽略 routingKey,广播给所有绑定队列
- Topic:routingKey 支持 * (一级)和 #(多级)通配
- Headers:按消息头匹配,性能差,几乎不用
没绑队列会怎样
Exchange 不存消息,如果没有任何队列绑定,消息会被直接丢弃且生产者不一定知道。开启 mandatory 或 publisher confirm 才能发现这种情况。