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

1、RabbitMQ的概述笔记

一、什么是RabbitMQ

Rabbit是一个公司名.MQ(nessage queue) 消息队列的意思,RabbitMQ 是 Rabbit企业下的一个消息队列产品。

RabbitMQ 是⼀个实现了 AMQP 的 消息队列 服务,是当前主流的消息中间件之⼀.
AMQP:即Advanced MessageQueuingProtocol(高级消息队列协议),是一个通用的应用层
协议,提供统一消息服务的协议,为面向消息的中间件设计。基于此协议的客户端与消息中间
件可传递消息,并不受客户端或中间件,开发语言等条件的限制。

二、MQ是什么

MQ(Message queue) 从字面意思上看,本质是一个队列 先进先出,队列中存放的是消息(message)而已.消息可以非常简单,比如文本字符串 JSON等,也可以是很复杂的内嵌对象

MQ常常用户分布式系统之间进行通信

两种方式:

1.同步通信

数据从一段发出就立即可以到达另一端

2.异步通信

数据从一段发出,先进入一个容器中进行临时存储,当到达某种条件,在由这个容器发送给另一端

容器的一个具体实现就是MQ(message)

三、MQ的作用

MQ主要工作是接收并转发消息,在不同的应用场景下可以展现不同作用

举一个例子,可以将MQ想象成一个仓库,采购部门进货之后,把零件放入仓库中,生产部门从仓库中取出零件并加工成产品,MQ和仓库的区别是,仓库中存放的是物品,MQ中存放的是消息。仓库负责存放物品并转发物品,MQ负责存放消息和消息的转发

1、异步解耦:

在业务流程中,一些操作可能非常耗时,但并不需要即时返回结果.可以借助MQ把这些操作异步化,比如用户注册后发送注册短信或邮件通知,可以作为异步任务处理,而不必等待这些操作
完成后才通知用户注册成功。

2、流量削峰

当面对访问量突然激增的情况时,确保应用程序依然能够稳定运行是至关重要的。然而,如果为了应对这种不常见的流量峰值而配置充足的资源,则可能导致资源的极大浪费。使用消息队列(Message Queue, MQ)是一个有效的解决方案,它可以帮助关键系统组件承受突发的访问压力,避免因瞬间高流量导致的系统崩溃。例如,在进行秒杀活动或促销推广时,可以通过MQ来管理涌入的请求。具体来说,MQ可以将这些请求加入队列中,而不是直接对后端系统造成冲击。系统随后依据自身的处理能力,逐步处理这些排队的请求。这种方法不仅保护了系统免受瞬时高负载的影响,还使得资源利用更加高效合理。

3、消息分发

当多个系统需要对同一数据进行响应时,采用消息队列(Message Queue, MQ)来进行消息分发是一个理想的选择。例如,在支付成功后,支付系统可以将这一事件作为消息发送到消息队列中。其他相关的系统则订阅这个消息队列,一旦有新的消息到达,这些系统就能立即得到通知并作出相应的处理。这种方式避免了各个系统通过定时轮询数据库的方式来检查是否有更新,从而减少了数据库的压力和系统的复杂性。

4、延迟通知

在需要于特定时间后发送通知的场景中,利用消息队列(Message Queue, MQ)的延迟消息功能是一种非常有效的解决方案。例如,在电子商务平台中,如果用户下单之后在一定时间内没有完成支付,系统可以使用MQ的延迟队列功能来设置一个自动取消订单的任务。

四、主流的MQ

1. Kafka

Apache Kafka 最初由LinkedIn开发,并于2011年开源。它的设计初衷确实是为了处理大规模的日志数据传输问题,但是它的应用范围远远超出了日志收集。Kafka是一个分布式的流处理平台,它能够提供高吞吐量、可持久化的消息队列服务。它不仅支持传统的发布/订阅模式的消息传递,还提供了复杂的流处理功能。

2.RabbitMQ

采用Erlang语言开发,MQ功能比较完备,且几乎支持所有主流语言,开源提供的界面也非常友好,性 能较好,吞吐量能达到万级,社区活跃度也比较高,比较适合中小型公司,数据量没那么大,且并发没 那么高的场景.

相关文章:

  • 传统中台的重生——云原生如何重塑政务系统后端架构
  • 电子级甲基氯硅烷
  • [mysql]窗口函数
  • Java安全之URLDNS链分析
  • 论文阅读:2024 ACL ArtPrompt: ASCII Art-based Jailbreak Attacks against Aligned LLMs
  • 基于线性LDA算法对鸢尾花数据集进行分类
  • 【数据可视化艺术·应用篇】三维管线分析如何重构城市“生命线“管理?
  • BongoCat - 跨平台键盘猫动画工具
  • AI数据分析的利器:解锁BI工具的无限潜力
  • 大模型微调 - transformer架构
  • 全球碳化硅晶片市场深度解析:技术迭代、产业重构与未来赛道争夺战(2025-2031)
  • Linux部署ragflow,从安装docker开始~
  • 斗鱼娱乐电玩平台源码搭建实录
  • 课程9. 机器翻译,Seq2Seq与Attention
  • EasyRTC音视频实时通话嵌入式SDK,打造社交娱乐低延迟实时互动的新体验
  • 嵌入式鸿蒙系统环境搭建与配置要求实现01
  • .NET中,const和readonly区别
  • 鸿蒙NEXT开发剪贴板工具类(ArkTs)
  • Gradle安装与配置国内镜像源指南
  • 【前缀和计算和+哈希表查找次数】Leetcode 560. 和为 K 的子数组
  • 美联合健康集团高管枪杀案嫌疑人对谋杀指控不认罪
  • 一季度煤价持续下探,多家煤炭巨头营收下滑、净利润降约两成
  • 深圳大学传播学院院长巢乃鹏已任深圳大学副校长
  • 百台新车首秀上海车展,跨国车企联手中国技术开启智能化下半场
  • 上海:全面建设重复使用火箭创新高地、低成本商业卫星规模制造高地
  • 吃菜和吃肉,哪个更“增肌”?