消息队列绑定
Binding 是什么?
Exchange 和 Queue 之间的路由规则
类比:分拣中心墙上的「发往朝阳区的走 3 号口」
它是什么
Binding 是一条关系:把某个 Queue 绑到某个 Exchange 上,并带一个 binding key。消息到达 Exchange 时,用 routingKey 去和所有 binding key 比对,命中的队列都收到一份。
一个队列可以绑定多个 Exchange,一个 Exchange 也可以绑定多个队列,形成一张路由网。
匹配规则
不同 Exchange 类型的匹配逻辑完全不同,这是最容易搞混的地方。
- Direct:routingKey == bindingKey
- Topic:按 . 分段,* 匹配一段,# 匹配零到多段
- Fanout:不比较 key,绑定即投递
调试建议
消息「发出去了但没收到」,九成是 binding key 写错或队列没绑定。用管理界面的 Exchange → Bindings 页面直接看绑定关系,比猜快得多。