CodeRoadMap
首页路线题库资源库文章社区
CodeRoadMap

程序员的学习成长路线图。内容免费开放,登录后可同步路线图与课时进度。

由 程序员柏风 独立维护 · 关于作者

学习

  • 路线图
  • 课程
  • 面试题
  • 文章
  • 我

更多

  • 资源
  • 社区
  • 关于作者
  • 内容说明

© 2026 CodeRoadMap

津ICP备2026012044号-1·津公网安备12011002026155号·coderoadmap@126.com
RabbitMQ 入门/课时/核心概念
RawBlame
课时目录12 节

RabbitMQ 入门

  1. 01RabbitMQ 是什么
  2. 02核心概念
  3. 03Docker 运行 RabbitMQ
  4. 04发布与消费
  5. 05Exchange 类型
  6. 06Spring AMQP
  7. 07可靠性与死信
  8. 08常见模式
  9. 09RabbitMQ vs Kafka
  10. 10监控与管理
  11. 11Compose 联调
  12. 12综合练习

核心概念

Producer、Exchange、Queue、Binding、Consumer。

30 分钟

核心概念

RabbitMQ 遵循 AMQP 0-9-1:消息不直接进 Queue,而是先经 Exchange 按规则路由。弄清 Producer、Exchange、Binding、Queue、Consumer 五元关系,后面 Spring AMQP 与可靠性配置才看得懂。

学习目标

  • 画出消息从发布到 ack 的完整路径
  • 理解 routing key、binding key、virtual host
  • 知道 Channel 与 Connection 的分工

核心内容

组件关系

Producer --(routing key)--> Exchange --(binding)--> Queue --> Consumer
                ^                              ^
           不存消息                        存消息直到 ack
  • Virtual Host (/):逻辑隔离,类似数据库 schema
  • Exchange:只路由,默认不持久化消息体
  • Queue:缓冲;可 durable,配合持久化消息防重启丢单
  • Binding:Exchange 与 Queue 的匹配规则(含 routing key / headers)
  • Consumer:basicConsume 拉取或推送;manual ack 后才从队列删除

Java 客户端(概念)

依赖 com.rabbitmq:amqp-client;Spring 项目通常直接用 Spring AMQP(rmq-spring)。

ConnectionFactory factory = new ConnectionFactory();
factory.setHost("localhost");
try (Connection conn = factory.newConnection();
     Channel channel = conn.createChannel()) {
    channel.queueDeclare("coderoadmap.tasks", true, false, false, null);
    channel.basicPublish("", "coderoadmap.tasks",
        MessageProperties.PERSISTENT_TEXT_PLAIN,
        "export:lesson-42".getBytes(StandardCharsets.UTF_8));
}

空字符串 Exchange 表示 default exchange:routing key 等于 queue 名时直投该队列。复杂路由见 rmq-exchanges。

与 Kafka 名词对照

RabbitMQKafka 近似
QueueTopic 分区上的消费进度
Exchange + BindingTopic 订阅 / 过滤
Consumer ackoffset commit
routing keymessage key

Kafka 消费进度在 Broker 日志;RabbitMQ 消息在 被 ack 前 一直占队列深度——监控见 rmq-monitor。

练习

  • 说明为何 Producer 不直接 queueDeclare 后 publish 到任意 queue 名(Hint: Exchange)
  • 写出 manual ack 与 auto ack 对「处理一半宕机」的差异
  • 对照 kafka-producer 的 Topic,解释 Binding 的作用

小结

Exchange 路由、Queue 存储、Consumer ack 删除——这是 AMQP 的心智模型。 下一课用 Docker 启动带 Management 的 Broker。

加载本节练习…
← 上一课RabbitMQ 是什么下一课 →Docker 运行 RabbitMQ