Skip to content

消息队列技术栈总览(RabbitMQ)

一句话定位:消息队列是异步解耦、削峰填谷、流量缓冲的中间件——生产者把消息发给 Broker,消费者异步消费;RabbitMQ 基于 AMQP 协议,核心是「Producer → Exchange(路由)→ Queue(存储)→ Consumer」,靠交换机类型决定路由规则,靠确认 + 持久化 + 重试保证可靠性。

组件栈地图

组件职责
BrokerRabbitMQ 服务端,管理 Exchange 和 Queue
Exchange交换机,接收消息并按 RoutingKey 路由到队列(fanout/direct/topic)
Queue队列,FIFO 存储消息
Channel建立在 TCP 连接上的虚拟连接,每条 AMQP 指令都走 Channel
Binding交换机与队列的关联(多对多,指定 BindingKey)
Virtual Hostvhost,mini 版 RabbitMQ,隔离多应用

消息队列三大作用

作用场景
异步解耦下单后异步发短信/通知,主流程不阻塞
削峰填谷秒杀流量先入队,后端按能力消费
流量缓冲上下游处理速度不匹配时缓冲

一条消息的完整链路

Producer → Exchange(按 RoutingKey 路由) → Queue(FIFO 存储) → Consumer
              ↓ confirm/return 确认                     ↓ ack 确认

不变量(必须成立的约束)

  • 消息必须经过 Exchange → Queue 两跳,交换机决定「路由到哪个队列」。
  • Channel 是轻量虚拟连接,一个 TCP 连接可开多个 Channel(避免频繁建连)。
  • 可靠性靠「生产者 confirm + 持久化 + 消费者 ack」三件套,缺一环都可能丢消息。

常见误解

  • 以为消息队列只是「延迟处理」→ 它核心是解耦 + 削峰 + 缓冲,异步是手段不是目的。
  • 以为交换机存储消息 → Exchange 只做路由不存储,Queue 才存储消息。

关联

最近更新