当前位置: 首页 > news >正文

消息队列(MQ)入门笔记

很多新人第一次学后端听到RabbitMQ Kafka RocketMQ会特别懵。感觉怎么突然又冒出来一个“队列”其实消息队列真正核心思想并不复杂。一句话让系统之间异步通信一、什么是消息队列MQMQ全称Message Queue中文消息队列你可以理解成存消息的中转站二、为什么需要 MQ先看最普通情况。用户下单传统流程用户下单 ↓ 订单系统 ↓ 数据库 ↓ 短信服务 ↓ 邮件服务 ↓ 库存服务 ↓ 积分服务三、问题在哪如果短信服务挂了整个下单可能卡住邮件慢用户一直等系统之间耦合非常严重四、MQ 的核心思想把“直接调用”变成“发消息”五、引入 MQ 后流程变成用户下单 ↓ 订单系统 ↓ 发消息到 MQ ↓ 立刻返回用户 然后 短信系统自己消费 邮件系统自己消费 库存系统自己消费 积分系统自己消费六、为什么叫“队列”因为消息会排队例如消息1 消息2 消息3消费者一个一个处理。七、MQ 最核心作用必须掌握消息队列最核心只有三个作用。八、作用1解耦最重要系统之间不再直接调用而是通过 MQ 通信没有 MQ订单系统 ↓ 直接调用短信系统短信挂了订单也可能受影响。有 MQ订单系统 ↓ 发消息 ↓ MQ ↓ 短信系统自己处理订单系统根本不用管短信系统。九、作用2异步重点很多操作其实不需要立刻完成例如发短信发邮件积分统计日志分析这些都可以慢慢处理十、为什么异步会快传统用户必须等所有操作完成MQ先返回用户 后面再慢慢处理所以体验会快很多。十一、作用3削峰高并发重点例如双11。突然10万人同时下单数据库可能直接炸。十二、MQ 如何削峰MQ先把请求缓存到队列后端慢慢消费。类比食堂打饭没队列10万人一起冲窗口直接崩。有队列排队 一个一个来系统稳定很多。十三、MQ 核心概念必须掌握MQ 最核心只有生产者 消费者 队列十四、生产者Producer负责发送消息例如订单系统。十五、消费者Consumer负责处理消息例如短信服务。十六、队列Queue负责存消息十七、完整流程重点生产者 ↓ 发送消息 ↓ 消息队列 ↓ 消费者 ↓ 处理消息十八、最经典案例订单系统用户下单订单系统创建订单然后发送 “用户下单成功”到 MQ。其他系统看到消息后分别处理库存系统扣库存短信系统发短信积分系统增加积分十九、RabbitMQ最经典 MQ 之一。特点简单 稳定 容易学Go 后端非常常见。二十、KafkaKafka特点超高吞吐 大数据 日志流互联网大厂大量使用。二十一、RocketMQ阿里开源。特点事务消息强 电商场景多二十二、为什么 Go 项目经常配 MQ真实项目不可能所有事情同步执行否则系统会又慢又脆弱所以Gin MySQL Redis MQ是非常经典组合。二十三、同步 vs 异步必须理解同步你做完 我才能继续例如打电话。异步你先去做 做完通知我例如发微信。二十四、MQ 本质就是异步核心思想发送消息后 先不等结果后面消费者慢慢处理。二十五、为什么消息不会丢MQ会先存消息消费者处理成功后才删除。二十六、ACK确认机制消费者处理成功会告诉 MQ我处理完了这叫ACK二十七、如果消费者崩了MQ发现没ACK就会重新投递消息二十八、消息重复怎么办所以真实开发消费者必须幂等二十九、什么是幂等例如扣库存同一消息来两次。不能扣两次三十、为什么 MQ 很重要因为现代系统本质已经不是单体应用而是多个服务协作MQ就是服务之间的中间人三十一、真实项目中的 MQ 场景非常多。例如电商下单扣库存发优惠券社交发通知点赞推送视频平台转码审核推荐日志系统日志采集数据分析三十二、第一阶段学 MQ 学什么不要一开始就研究集群 事务消息 延迟队列 死信队列先掌握1. 什么是MQ 2. 为什么需要MQ 3. 生产者 4. 消费者 5. 队列 6. 同步 vs 异步就够了。三十三、最后一句总结消息队列本质系统之间的异步通信中间件核心作用解耦 异步 削峰核心结构生产者 ↓ 消息队列 ↓ 消费者现代后端开发Gin MySQL Redis MQ几乎属于经典组合。
http://www.gsyq.cn/news/1374718.html

相关文章:

  • LoRa设备射频指纹识别:基于ResNet-34与三重水印的鲁棒认证系统
  • Python遥感开发之偏相关分析
  • LLM应用开发之向量数据库详解
  • 从原理到调参:手把手教你用OpenCV玩转Canny边缘检测(Python代码详解)
  • 半导体供应链展会详解,打通上下游供货交易渠道 - 品牌2025
  • 足底压力数据异常检测:SPM统计方法与可解释机器学习对比实践
  • 小学期作业设计2.0
  • 别让Sonoma动态壁纸‘偷’走你的空间:一个Finder快捷键 + 隐藏路径的完整避坑指南
  • 从数据到决策:构建高精度电信客户流失预测模型的实战指南
  • 肺结节体积计算:从球形近似到非线性回归的三种手动方法详解
  • C++中的bind实践代码
  • D-S2HARE:动态对抗响应式隐私攻击的机器学习模型安全共享防御框架
  • 基于IC动态加权的机器学习多因子选股策略:从模型融合到实战回测
  • 半导体行业展会怎么挑选,适配企业参展的实用指南 - 品牌2025
  • 低代码开发的招聘管理系统实际运行数据和效果究竟如何?
  • NsEmuTools:终极NS模拟器自动化管理完整指南
  • 物理信息机器学习:融合物理定律与数据,革新燃烧模拟与优化
  • 重赏之下必有勇夫的科学依据找到了:《Science》发现超级大奖励可“开挂”学习,多巴胺是幕后功臣
  • 粒子物理分析中类别权重对机器学习分类器性能与物理结果的影响
  • GDRE Tools实战指南:Godot PCK逆向与GDScript反编译工作流
  • Unity程序集打包复用指南:如何将你的通用工具代码做成一个可移植的.dll文件
  • 2026年4月观光车厂家推荐,消防巡逻车/安保巡逻车/电动消防车/场内观光车/8座电动巡逻车/巡逻车,观光车品牌有哪些 - 品牌推荐师
  • codex+claudecode+ccswitch+gpt5.5一键部署工具
  • Unity C# Partial类实战:解耦大型项目架构的核心技术
  • HPE DL560 Gen10服务器装系统踩坑实录:Windows Server 2012 R2下P816i-a SR阵列卡驱动安装全流程
  • iOS越狱环境构建:Frida动态分析链路全栈配置指南
  • Unity WebGL打包后浏览器报错?手把手教你解决‘Unable to parse .gz’文件解析问题(附服务器配置思路)
  • 统信UOS 1070系统盘满了别慌!手把手教你用自带工具做全盘备份(附还原实战)
  • 告别命令行恐惧:用XManager 7远程连接Ubuntu 22.04桌面,像操作本地电脑一样丝滑
  • Unity Package Manager Loading Packages卡死原因与解决方案