很多人第一次接触 RabbitMQ,会把它想成一个“大队列”。
这个想法不算全错,但还不够深。
更准确的类比是:
RabbitMQ = 软件城市里的智能快递调度中心
商家门店 / 业务系统 = Producer(寄件方)
调度中心分拣大厅 = Exchange(分拣规则中心)
包裹暂存货架 = Queue(队列)
派送员 / 处理工人 = Consumer(消费方)
分拣规则连接线 = Binding(绑定关系)
包裹标签 = Routing Key(路由键)真实城市里,寄件人不会把包裹直接扔到某个派送员手里。
他会先把包裹送到调度中心,调度中心再按规则分流到不同货架,最后由对应派送员去取件。
RabbitMQ 也是一样:
Producer
|
| 发送消息 + routing key
v
Exchange
|
| 按 binding 规则分拣
v
Queue
|
| 投递给消费者
v
Consumer所以最核心的一句话是:
Producer 发送给 Exchange,不是直接发送给 Queue。
之所以很多人误以为“可以直接发到队列”,是因为 RabbitMQ 有一个默认交换机,它让简单场景看起来像“直达队列”。但本质上,仍然是先经过交换机再路由。