消息队列这个词,很多人第一次接触是在面试题里,第二次接触是在线上事故的复盘文档里。如果你已经能用 SpringBoot 写接口、能在 Linux 上敲常用命令,但被问到「消息为什么会丢」「重复消费怎么处理」「集群挂了一个节点会怎样」时答不完整,这门课就是冲这些缺口来的。

先确认你缺的是哪一块

RabbitMQ 的难点不在 API,API 翻文档就能写。真正卡人的是三块:一是模型,交换机、队列、绑定、路由键之间的关系没理顺,写出来的代码能跑但说不清为什么这么配;二是可靠性,消息从生产者发出到消费者确认,中间有四个可能丢消息的位置,不知道在哪丢就不知道该在哪补;三是幂等,消息中间件普遍保证「至少一次」,重复投递是常态而不是异常,业务侧不做去重,早晚要在对账时还债。

如果你的现状是「会发消息、会收消息,但出了乱序、堆积、重复消费只能重启试试」,那么这门课对应的正是这个阶段。课程假设你有 Linux 常用命令基础和 SpringBoot 开发经验,所以不会花篇幅讲怎么装 JDK、怎么建 SpringBoot 工程,这些前置能力默认你已经具备。

课程实际覆盖的内容

从运行环境搭建和管理命令入手,先把 Web 控制台用熟——很多人跳过这一步,结果排查问题时连队列有没有堆积、绑定关系对不对都看不到。接着是工作模型和常用交换机类型,直连、主题、扇出、头交换机各自适合什么场景,路由键怎么写才不会被自己绕进去,这部分建议边看边在控制台上手动建一遍。

再往后是两个容易被忽略但生产里离不开的组件:死信交换机和延迟交换机。死信队列不是「高级技巧」,而是消费失败、消息过期、队列超长时的标准兜底手段;延迟交换机则解决定时任务和超时取消这类需求,比轮询数据库体面得多。

课程中段集中处理可靠性与幂等性。交换机和队列的属性看着琐碎,但持久化、自动删除、排他、TTL、最大长度这些参数直接决定消息会不会丢、队列会不会被误删。消息的可靠性要分别从生产者确认、Broker 持久化、消费者手动确认三个方向补齐,缺一个环节整条链路就不成立。

最后落到集群和高可用,包括普通集群与镜像队列的差别、节点故障后的行为,以及搭建过程中容易踩的坑。这部分不适合只读不练,建议至少起两台机器或容器实际操作一遍。

看完应该能回答的问题

  • 一条消息从生产者到消费者,哪些环节可能丢失,分别用什么机制兜底?
  • 消费者重复收到同一条消息时,业务代码靠什么保证结果一致?
  • 死信交换机在什么条件下会被触发,延迟队列是怎么借助它实现的?
  • 队列的持久化和消息的持久化是不是一回事,只做其中一个会怎样?
  • 集群中某个节点宕机,未确认的消息和队列元数据会发生什么?

如果这些问题你现在只能答出一半,看完课程后回头再答一遍,能明显感觉到差别。

怎么练才不作废

光看不练的话,消息队列的知识点遗忘速度很快。建议每学完一个模型就在控制台手动建交换机、队列和绑定,用代码发几条消息观察流向;学可靠性时,故意让消费者抛异常、故意关掉持久化,看消息到底丢没丢;学集群时,手动停掉一个节点,观察客户端是否断开、队列是否还能读写。这些「破坏性实验」比顺顺利利跑通一次更能留下印象。

这门课不承诺让你变成架构师,它解决的是:面对一个已经上线的 RabbitMQ,你能看懂它在做什么,出问题时知道从哪查起,设计新链路时知道哪些参数不能省。

RabbitMQ 入门教程 - 精通消息队列

课程详情

课程详情

本课程深入浅出地讲解了消息队列的基本原理,以及RabbitMQ的常用使用方法。课程涵盖了保证消息的可靠性和幂等性,以及RabbitMQ集群的搭建等关键知识点。

适合人群

本课程适合具有一定Linux常用命令操作基础,熟悉SpringBoot基本开发的程序开发设计人员。

学习收获

  • 掌握消息队列的基本原理
  • 精通RabbitMQ的常用使用方法
  • 了解如何保证消息的可靠性和幂等性
  • 学会RabbitMQ集群的搭建

课程亮点

  • MQ简介
  • RabbitMQ运行环境搭建
  • RabbitMQ常用管理命令
  • RabbitMQWeb控制台使用
  • RabbitMQ的工作模型
  • 常用交换机类型
  • 死信交换机
  • 延迟交换机
  • 消息的可靠性
  • 交换机的常用属性
  • 队列的常用属性
  • 消息的幂等性
  • RabbitMQ的集群和高可用

课程目录

01 第一章
  01 虚拟机创建和安装操作系统.mp4
  02 修改主机名等.mp4
  03 链式编程.mp4
  04 建造者模式.mp4
  05 代码模板.mp4
  06 系统启动任务.mp4
  07 MQ简介.mp4
  08 rabbitmq应用场景.mp4
  09 erlang和rabbitmq的安装.mp4
  10 配置环境变量.mp4
  11 rabbitmqctl命令.学习.mp4
  12 web管理后台启用和创建虚拟主机.mp4
  13 web控制台的简单介绍.mp4
  14 工作模型.mp4
  15 扇形交换机和接收消息.mp4
  16 直连交换机1.mp4
  17 直连交换机2.mp4
  18 主题交换机1.mp4
  19 主题交换机2.mp4
  20 头部交换机.mp4
  21 ttl学习1.mp4
  22 ttl学习2.mp4
  23 死信交换机-队列过期.mp4
  24 单条消息过期.mp4
  25 死信队列-队列最大长度.mp4
  26 修改了2和3的代码.mp4
  27 消费者不确认1.mp4
  28 消息手动确认.mp4
  29 消息手动确认,不确认,不重新入队.mp4
  30 消费者拒绝消息不重新入队.mp4
  31 延迟队列实现方式1.mp4
  32 延迟队列实现方式2.mp4
  33 延迟队列实现方式3.mp4
  34 延迟队列消息过期时间不一致问题.mp4
  35 解决消息过期时间不一致的问题.mp4
  36 解决消息过期时间不一致问题2.mp4
  37 使用延迟队列插件.mp4
  38 生产者确认模式1.mp4
  39 confirm1.mp4
  40 确认模式-匿名内部类.mp4
  41 确认模式-lambda表达式.mp4
  42 返回模式1和2.mp4
  43 返回模式-匿名内部类和lambda表达式.mp4
  44 交换机的持久化和自动删除.mp4
  45 备用交换机.mp4
  46 队列属性autodelete.mp4
  47 队列属性1.mp4
  48 队列属性2.mp4
  49 队列属性3.mp4
  50 消息可靠性简介.mp4
  51 可靠性-confirm.mp4
  52 可靠性return模式.mp4
  53 可靠性-交换机和队列和消息全部持久化.mp4
  54 开启消费者的手动确认.mp4
  55 幂等性介绍.mp4
  56 非幂等性工程搭建.mp4
  57 使用redis加上唯一key解决非幂等性问题.mp4
  58 集群模式介绍.mp4
  59 集群搭建-安装erlang.mp4
  60 安装rabbitmq和clone机器.mp4
  61 集群-防火墙等等处理.mp4
  62 搭建集群2.mp4
  63 搭建集群3.mp4
  64 默认集群模式的优缺点.mp4
  65 镜像模式搭建和使用.mp4