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

【RabbitMQ】----初识 RabbitMQ

1. MQ 是什么?

在互联网中,会经常使用 MQ 来作为消息通信服务,我们一起来看一下什么是 MQ 吧!

1.1 MQ 本质

MQ】(Message queue),消息队列,字面意思来看,本质是一个队列,FIFO先进先出,但这里的消息队列,只不过队列中存放的是消息,消息可以非常简单,也可以非常复杂

1.2 系统间通信

MQ 多用于分布式系统之间进行通信(系统通信,相当于数据传输)

这里补充介绍一下,系统之间的调用通常有两种方式:

  • 同步通信:直接调用对方的服务,数据从一端发出后立即就可以到达另一端

  • 异步通信:数据从一端发出后,先进入一个容器进行临时存储,当达到某种条件后,再由这个容器发送给另一端(这个容器的一个具体实现就是MQ)

2. MQ的作用是什么?

MQ 的工作是:接收并转发消息

可以把 MQ 消息队列想象成一个仓库,采购部门进货之后,把货物放在仓库里,生产部门从仓库中取出零件,并加工成产品,这样类比,可能更帮助我们理解,仓库放的是物品, MQ 放的是消息,仓库负责存储物品,并转发物品,同样的,MQ 负责存储和转发消息

2.1 异步解耦

在一些业务流程中,一些操作可能会非常耗时,但并不需要即时返回结果,可以借助 MQ 把这些操作异步化(可回顾这期内容,介绍了解耦等名词【多线程】阻塞队列,解耦,就是依赖关系减弱)

举一个栗子,比如在用户注册的使用,有以下三个事情需要做:
1)用户信息校验
2)插入数据库(其实这个操作,用户的数据就已经在数据库了)
3)发送邮件(告诉用户,比如,恭喜你,注册成功等类似信息)

2.2 流量削峰

在访问量剧增的情况下,应用仍然需要继续发挥作用,但是这样的突发流量并不常见,如果以能处理这类峰值为标准而投入资源,这无疑是巨大的资源浪费,使用 MQ 能够使关键组件支撑突发访问压力,不会因为突发流量而崩溃,比如秒杀活动或者促销活动,可以使用 MQ 来控制流量,将请求排队,系统再根据自己的处理能力逐步处理这些请求,使请求是平缓的速度,而不是猛增猛降

2.3 消息分发

多个系统需要对同一数据做出响应的时候,可以使用 MQ 进行消息分发,比如支付成功之后,支付系统可以向 MQ 发送消息,其它系统订阅该消息,而不需要轮询数据库

举一个栗子,比如在购物的时候,下单成功,有以下几个事情需要做:
1)向商家发送通知
2)向平台财务部门发送通知

2.4 延迟通知

需要在特定时间后发送通知的场景中,可以使用 MQ 的延迟消息功能,比如,在电子商务平台中,如果用户下单后一定时间内未支付,可以使用延迟队列在超时后自动取消订单(可以把 MQ 想象一个仓库,暂时存储了这些消息,到一定时候进行转发~)

2.5 日志处理

MQ 消息队列还可以用于日志处理,例如,Kafka 等消息队列中间件可以接收并存储大量的日志数据,供日志处理应用进行订阅和消费,通过这种方式可以简化日志处理的架构,提高日志处理的效率和可靠性

3. 为什么选择 RabbitMQ?

RabbitMQ的综合能力较强,并且我们的项目没有那么那么大的高并发,RabbitMQ 社区比较活跃,同时RabbiMQ 管理界面友好,因此,本专栏学习 MQ 选择了 RabbitMQ ,小伙伴们~接下来我们主要一起来学习RabbitMQ的使用。

4. RabbitMQ 是什么?

可以通过 RabbitMQ 官网,更进一步了解

RabbitMQ 是采用 Erlang 语言实现AMQP(Advanced Message Queuing Protocol)高级消息队列协的消息中间件,它最初起源于金融系统领域,为了在分布式系统中存储和转发消息设计的~

💛💛💛本期内容回顾💛💛💛


文章转载自:

http://8UVGhxHu.dLmqn.cn
http://VeSQuvhu.dLmqn.cn
http://mvofdYsF.dLmqn.cn
http://u97ZOnTN.dLmqn.cn
http://jlhCtUl6.dLmqn.cn
http://riYW9ji8.dLmqn.cn
http://uKbsN7ua.dLmqn.cn
http://LmJNkBv9.dLmqn.cn
http://2x1pFrnu.dLmqn.cn
http://DcrSsHJt.dLmqn.cn
http://9vJS0sKd.dLmqn.cn
http://q0OJBtKv.dLmqn.cn
http://JV9KXk3V.dLmqn.cn
http://YJ8gNomP.dLmqn.cn
http://BEcqw2JF.dLmqn.cn
http://anP1A0Gf.dLmqn.cn
http://uTRmFAzf.dLmqn.cn
http://VhSyQl9L.dLmqn.cn
http://AEDGjbBa.dLmqn.cn
http://30nY2EfJ.dLmqn.cn
http://tyUsutK3.dLmqn.cn
http://OCJchv26.dLmqn.cn
http://gAYbbAKJ.dLmqn.cn
http://Lc3AmvS8.dLmqn.cn
http://f99uccvO.dLmqn.cn
http://gRRU9WYv.dLmqn.cn
http://mPfD9nBt.dLmqn.cn
http://fjTqZvnI.dLmqn.cn
http://ywLoW0j2.dLmqn.cn
http://VbgRAej0.dLmqn.cn
http://www.dtcms.com/a/371294.html

相关文章:

  • WebRTC开启实时通信新时代
  • JVM-默背版
  • Java内存区域与内存溢出
  • Python3使用Flask开发Web项目新手入门开发文档
  • 深入理解跳表:多层索引加速查找的经典实现
  • 从 “Hello AI” 到企业级应用:Spring AI 如何重塑 Java 生态的 AI 开发
  • 大模型架构演进全景:从Transformer到下一代智能系统的技术路径(MoE、Mamba/SSM、混合架构)
  • leetcode 912 排序数组(归并排序)
  • Flutter SDK 安装与国内镜像配置全流程(Windows / macOS / Linux)
  • 【算法】92.反转链表Ⅱ--通俗讲解
  • Spring Cloud Alibaba快速入门02-Nacos(上)
  • Selenium自动化测试
  • B.50.10.11-Spring框架核心与电商应用
  • 芯片ATE测试PAT(Part Average Testing)学习总结-20250916
  • Visual acoustic Field,360+X论文解读
  • Android系统更新系统webview. 2025-09-06
  • Simulink子系统、变体子系统及封装知识
  • 详解 Java 中的 CopyOnWriteArrayList
  • FTL(Flash Translation Layer)
  • C++输出字符串的统一码(Unicode Code)和 ASCII 码
  • 【PCIe EP 设备入门学习专栏 -- 8.1.2 PCIe EP 通路详细介绍】
  • nginx安装部署(备忘)
  • 6.虚拟化历史
  • 疯狂星期四文案网第62天运营日记
  • AI工程师对于AI的突发奇想
  • 模电仿真软件:MultSim14.3下载与安装
  • 心路历程-passwdusermod命令补充
  • 自旋锁/互斥锁 设备树 iic驱动总线 day66 67 68
  • 【尚跑】2025逐日者15KM社区赛西安湖站,74分安全完赛
  • 页面间的导航:`<Link>` 组件和 `useRouter`