消息队列(MQ)入门笔记

很多新人第一次学后端:

听到:

txt 复制代码
RabbitMQ
Kafka
RocketMQ

会特别懵。

感觉:

txt 复制代码
怎么突然又冒出来一个"队列"

其实:

消息队列真正核心思想:

并不复杂。

一句话:

txt 复制代码
让系统之间异步通信

一、什么是消息队列(MQ)

MQ:

全称:

txt 复制代码
Message Queue

中文:

txt 复制代码
消息队列

你可以理解成:

txt 复制代码
存消息的中转站

二、为什么需要 MQ

先看最普通情况。


用户下单

传统流程:

txt 复制代码
用户下单
↓
订单系统
↓
数据库
↓
短信服务
↓
邮件服务
↓
库存服务
↓
积分服务

三、问题在哪

如果:

短信服务挂了:

txt 复制代码
整个下单可能卡住

邮件慢:

txt 复制代码
用户一直等

系统之间:

txt 复制代码
耦合非常严重

四、MQ 的核心思想

把:

txt 复制代码
"直接调用"

变成:

txt 复制代码
"发消息"

五、引入 MQ 后

流程变成:

txt 复制代码
用户下单
↓
订单系统
↓
发消息到 MQ
↓
立刻返回用户

然后:

短信系统自己消费
邮件系统自己消费
库存系统自己消费
积分系统自己消费

六、为什么叫"队列"

因为:

消息会:

txt 复制代码
排队

例如:

txt 复制代码
消息1
消息2
消息3

消费者:

一个一个处理。


七、MQ 最核心作用(必须掌握)

消息队列:

最核心:

只有三个作用。


八、作用1:解耦(最重要)

系统之间:

不再:

txt 复制代码
直接调用

而是:

txt 复制代码
通过 MQ 通信

没有 MQ

txt 复制代码
订单系统
↓
直接调用短信系统

短信挂了:

订单也可能受影响。


有 MQ

txt 复制代码
订单系统
↓
发消息
↓
MQ
↓
短信系统自己处理

订单系统:

根本不用管短信系统。


九、作用2:异步(重点)

很多操作:

其实:

txt 复制代码
不需要立刻完成

例如:

  • 发短信
  • 发邮件
  • 积分统计
  • 日志分析

这些:

都可以:

txt 复制代码
慢慢处理

十、为什么异步会快

传统:

txt 复制代码
用户必须等所有操作完成

MQ:

txt 复制代码
先返回用户
后面再慢慢处理

所以:

体验:

会快很多。


十一、作用3:削峰(高并发重点)

例如:

双11。

突然:

txt 复制代码
10万人同时下单

数据库:

可能直接炸。


十二、MQ 如何削峰

MQ:

先把请求:

txt 复制代码
缓存到队列

后端:

慢慢消费。


类比

食堂打饭:


没队列

txt 复制代码
10万人一起冲窗口

直接崩。


有队列

txt 复制代码
排队
一个一个来

系统稳定很多。


十三、MQ 核心概念(必须掌握)

MQ 最核心:

只有:

txt 复制代码
生产者
消费者
队列

十四、生产者(Producer)

负责:

txt 复制代码
发送消息

例如:

订单系统。


十五、消费者(Consumer)

负责:

txt 复制代码
处理消息

例如:

短信服务。


十六、队列(Queue)

负责:

txt 复制代码
存消息

十七、完整流程(重点)

txt 复制代码
生产者
↓
发送消息
↓
消息队列
↓
消费者
↓
处理消息

十八、最经典案例(订单系统)


用户下单

订单系统:

txt 复制代码
创建订单

然后:

txt 复制代码
发送:
"用户下单成功"

到 MQ。


其他系统

看到消息后:

分别处理:


库存系统

txt 复制代码
扣库存

短信系统

txt 复制代码
发短信

积分系统

txt 复制代码
增加积分

十九、RabbitMQ

最经典 MQ 之一。

特点:

txt 复制代码
简单
稳定
容易学

Go 后端:

非常常见。


二十、Kafka

Kafka:

特点:

txt 复制代码
超高吞吐
大数据
日志流

互联网大厂:

大量使用。


二十一、RocketMQ

阿里开源。

特点:

txt 复制代码
事务消息强
电商场景多

二十二、为什么 Go 项目经常配 MQ

真实项目:

不可能:

txt 复制代码
所有事情同步执行

否则:

系统会:

txt 复制代码
又慢又脆弱

所以:

txt 复制代码
Gin + MySQL + Redis + MQ

是非常经典组合。


二十三、同步 vs 异步(必须理解)


同步

txt 复制代码
你做完
我才能继续

例如:

打电话。


异步

txt 复制代码
你先去做
做完通知我

例如:

发微信。


二十四、MQ 本质就是异步

核心思想:

txt 复制代码
发送消息后
先不等结果

后面:

消费者:

慢慢处理。


二十五、为什么消息不会丢

MQ:

会:

txt 复制代码
先存消息

消费者:

处理成功后:

才删除。


二十六、ACK(确认机制)

消费者:

处理成功:

会告诉 MQ:

txt 复制代码
我处理完了

这叫:

txt 复制代码
ACK

二十七、如果消费者崩了

MQ:

发现:

txt 复制代码
没ACK

就会:

txt 复制代码
重新投递消息

二十八、消息重复怎么办

所以:

真实开发:

消费者:

必须:

txt 复制代码
幂等

二十九、什么是幂等

例如:

txt 复制代码
扣库存

同一消息:

来两次。

不能:

txt 复制代码
扣两次

三十、为什么 MQ 很重要

因为:

现代系统:

本质:

已经不是:

txt 复制代码
单体应用

而是:

txt 复制代码
多个服务协作

MQ:

就是:

txt 复制代码
服务之间的中间人

三十一、真实项目中的 MQ 场景

非常多。

例如:


电商

  • 下单
  • 扣库存
  • 发优惠券

社交

  • 发通知
  • 点赞
  • 推送

视频平台

  • 转码
  • 审核
  • 推荐

日志系统

  • 日志采集
  • 数据分析

三十二、第一阶段学 MQ 学什么

不要一开始:

就研究:

txt 复制代码
集群
事务消息
延迟队列
死信队列

先掌握:

txt 复制代码
1. 什么是MQ
2. 为什么需要MQ
3. 生产者
4. 消费者
5. 队列
6. 同步 vs 异步

就够了。


三十三、最后一句总结

消息队列本质:

txt 复制代码
系统之间的异步通信中间件

核心作用:

txt 复制代码
解耦
异步
削峰

核心结构:

txt 复制代码
生产者
↓
消息队列
↓
消费者

现代后端开发:

txt 复制代码
Gin + MySQL + Redis + MQ

几乎属于经典组合。

相关推荐
腻害兔2 小时前
【若依项目-产品经理视角】深度拆解 RuoYi-Vue-Pro 商城模块:从商品管理到交易引擎,50 张表撑起一整套电商系统
java·大数据·vue.js·产品经理·ai编程
码智社3 小时前
AES加密原理详解及Java实现加解密实战
java·开发语言
克里斯蒂亚诺更新3 小时前
ruoyi角色权限的对应关系
笔记
萧瑟余晖4 小时前
JDK 26 新特性详解
java·开发语言
马优晨5 小时前
Freemarker 完整讲解(后端 Java 模板引擎)
java·开发语言·freemarker·freemarker 完整讲解·freemarker模板引擎
a1117766 小时前
2FA 验证码生成器(github登录验证 app)
笔记·学习
维天说7 小时前
CLI-Switch 2026年3月版历史设计:Hook、TTY 隔离与 JSON 状态
java·服务器·json
破碎的南瓜7 小时前
sqli--sql注入过关笔记(1,2,3,4,5,9)
数据库·笔记·sql
Zane19948 小时前
并发 vs 并行:别再傻傻分不清了,一文讲透 Java 并发编程的第一课
java·后端
你想知道什么?8 小时前
线性回归-学习笔记
笔记·学习·线性回归