Skip to content

RabbitMQ 总览

RabbitMQbroker 4.1.4client amqp-client 5.34.0tag+digest 双锁

本页结论:RabbitMQ 首先是一个支持灵活路由与传统消息队列语义的 Broker;它用 Exchange/Binding 做路由、用 Queue 存消息、用两段独立确认(Publisher Confirms 与 Consumer ACK)构建可靠链路。

定位与适用场景

RabbitMQ 是消息队列(Message Queue)家族的典型代表:

  • 任务分发:把耗时任务放入队列,由多个 Worker 竞争消费(Work Queue)。
  • 事件广播:通过 Fanout/Topic Exchange 把一条事件复制给多个独立订阅者。
  • 复杂路由:Routing Key + 多种 Exchange 类型支持按模式分发。
  • 不太适合:超长保留期的日志回放、按任意位点重读历史——消息在 ACK 后即从队列移除,这是队列语义而非日志语义(对比 Kafka,见 消息模型)。

架构速览

核心实体与关系(详见 核心概念映射):

实体职责
Virtual Host隔离边界:Exchange、Queue、权限都在 vhost 内
Connection / ChannelTCP 连接与复用其上的逻辑通道,几乎所有操作在 Channel 上进行
Exchange接收消息并按类型 + Binding 路由,本身不存消息
BindingExchange → Queue 的路由规则(routing key / headers)
Queue真正存消息的地方;消费者从队列取消息

能力摘要

维度RabbitMQ(本仓库覆盖范围)
投递语义at-most-once(自动 ACK)/ at-least-once(手动 ACK + Confirms);无跨系统 exactly-once
顺序单队列内 FIFO;重试、requeue 会打乱顺序
重试/DLQ无内置消费重试;TTL + DLX 组合模式(实验
延迟消息队列级/消息级 TTL + DLX 组合;per-message TTL 按队头计算
高可用Quorum Queue(Raft 多数派复制);Classic Queue 镜像模式已弃用
回放不适用(队列语义,ACK 后删除);RabbitMQ Streams 是例外

学习路径

  1. 快速开始:最短闭环。
  2. 核心概念映射:用 RabbitMQ 术语回答统一知识模型。
  3. 路由与分发:Exchange 类型与绑定。
  4. 可靠性:两段确认与崩溃窗口。
  5. 存储与高可用:三种队列与 Quorum 权衡。
  6. 运维与观测陷阱与检查表
  7. 动手实验:basicconsumer-crashrouting 与 retry-dlq

版本基线

  • Broker:RabbitMQ 4.1.4(镜像 tag+digest 双锁定,见 .env.versions)。
  • Java 客户端:com.rabbitmq:amqp-client:5.34.0
  • 官方文档:https://www.rabbitmq.com/docs/(checkedAt: 2026-08-19)。

以统一实验验证消息系统语义边界