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综合练习

常见模式

工作队列、RPC、延迟队列概念。

30 分钟

常见模式

RabbitMQ 经典用法:工作队列 削峰填谷、RPC 临时回复队列、延迟队列(TTL + DLX 或插件)定时触发。CodeRoadMap lab 以工作队列为主;事件广播对照 kafka-intro。

学习目标

  • 实现多 Worker 竞争消费同一 Queue
  • 理解 RPC 的 replyTo 与 correlationId
  • 知道延迟消息的 TTL + DLX 思路

核心内容

工作队列(Work Queue)

[API 高峰 publish] --> [Queue: export.tasks] --> Worker1 / Worker2 / Worker3

订单导出、批量发邮件、生成报表:API 只入队立即返回,Worker 按 prefetch 拉活。扩容 加 Consumer 实例 即可;无需像 Kafka 那样改分区数。慢任务设 prefetch=1(rmq-publish)。

与 Redis List 队列相比,RabbitMQ 提供 ack、DLX、Management 可视化。

RPC(Request / Reply)

String replyQueue = channel.queueDeclare().getQueue();
AMQP.BasicProperties props = new AMQP.BasicProperties.Builder()
    .correlationId(corrId)
    .replyTo(replyQueue)
    .build();
channel.basicPublish("", "coderoadmap.rpc", props, requestBytes);
// 另线程 basicConsume replyQueue,匹配 correlationId

适合 短时同步语义、跨进程 调用;长耗时仍应改异步任务 + 轮询 MySQL 状态(spring-boot-essentials REST)。微服务间默认仍 REST/Feign,MQ RPC 作 lab 了解即可。

延迟队列(概念)

[延迟 Exchange/Queue TTL=30s] --过期--> [DLX] --> [实际消费 Queue]

「30 分钟后未支付取消订单」:消息先进延迟队列,到期死信到业务 Queue。也可用 rabbitmq_delayed_message_exchange 插件。Redis 键过期 + 回调 不可靠(键删除不保证触发),复杂延迟仍选 MQ。

与 Kafka 模式对照

模式RabbitMQKafka
任务竞争多 Consumer 同 Queue同 group 分摊分区
广播fanout多 consumer group
延迟TTL+DLX / 插件时间戳 + 消费过滤

练习

  • 用 3 个 Worker 消费 export.tasks,统计各自处理条数
  • 画出 RPC 的 replyTo 时序图
  • 说明「未支付超时关单」用 TTL+DLX 还是 Cron 扫 MySQL 更合适

小结

工作队列是 CodeRoadMap lab 核心;RPC/延迟知道原理即可。 下一课与 Kafka 系统选型对照。

加载本节练习…
← 上一课可靠性与死信下一课 →RabbitMQ vs Kafka