Skip to content

概念卡片:RabbitMQ 工作模式

一句话机制:RabbitMQ 的「工作模式」本质是交换机类型 + 消费者数量的组合——用不用交换机、用什么交换机(fanout/direct/topic)、一个还是多个消费者,决定了消息是「一对一」「竞争消费」还是「广播」。

六种工作模式

模式生产者/消费者交换机特点
简单模式1 对 1默认交换机(无需设置)点对点,最基本
工作队列1 对多(竞争)默认交换机多消费者抢消息,每条只被一个消费
发布/订阅1 对多(广播)fanout每个消费者都收到相同消息
路由模式1 对多(按 key)direct按 RoutingKey 精确路由到指定队列
主题模式1 对多(通配)topicRoutingKey 通配符(*/#)匹配
RPC 模式请求/响应远程过程调用,返回响应消息

关键区别速记

无交换机(默认)→ 简单模式 / 工作队列
fanout → 广播给所有绑定队列
direct → RoutingKey 精确匹配
topic  → RoutingKey 通配符匹配(* 一段、# 多段)

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

  • 简单/工作队列用默认交换机,无需显式建 Exchange;发布订阅/路由/主题必须显式建对应类型交换机
  • 工作队列是竞争消费:一条消息只被一个消费者处理,用于分摊任务。
  • fanout 是广播:所有绑定队列都收到,用于日志/通知等多消费者同收场景。

踩坑案例

  • 现象:想「一条消息多人都收到」,却用工作队列,结果消息被一个消费者抢走。 原因:工作队列是竞争关系。解决:改用 fanout 发布/订阅模式。

常见误解

  • 以为「多消费者」就是广播 → 工作队列是多消费者竞争(一条消息只消费一次),广播要用 fanout。
  • 以为所有模式都要建交换机 → 简单/工作队列用默认交换机,无需建。

关联

最近更新