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

RabbitMQ概述

什么是MQ

MQ (message queue)消息队列

MQ从字⾯意思上看,本质是个队列,FIFO先⼊先出,只不过队列中存放的内容是消息(message).消息可以⾮常简单,⽐如只包含⽂本字符串,JSON等,也可以很复杂,⽐如内嵌对象

RabbitMQ是MQ的一种实现,是Rabbit 企业下的⼀个消息队列产品

RabbitMQ采⽤Erlang语⾔开发,MQ功能⽐较完备,且⼏乎⽀持所有主流语⾔,开源提供的界⾯也⾮常友好,性 能较好,吞吐量能达到万级,社区活跃度也⽐较⾼,⽐较适合中⼩型公司,数据量没那么⼤,且并发没那么⾼的场景.

RabbitMQ是一个实现AMQP的消息队列服务,是当前主流的消息中间件之一

AMQP,即AdvancedMessageQueuingProtocol(⾼级消息队列协议),是⼀个通⽤的应⽤层协议,提供统⼀消息服务的协议,为⾯向消息的中间件设计。

基于此协议的客⼾端与消息中间件可传递消息,并不受客⼾端或中间件,开发语⾔等条件的限制。


通信

MQ通常用于分布式系统之间进⾏通信

系统之间的调⽤通常有两种⽅式:

1.同步通信

直接调⽤对⽅的服务,数据从⼀端发出后⽴即就可以达到另⼀端.

2.异步通信

数据从⼀端发出后,先进⼊⼀个容器进⾏临时存储,当达到某种条件后,再由这个容器发送给另⼀端.

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

\

比如: 打客服电话

1.客服直接响应

2.客服记录下来,等过一段时间后进行回复

MQ的作用

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

MQ类似于一个仓库,采购部⻔进货之后,把零件放进仓库⾥,⽣产部⻔从仓库中取出零件,并加 ⼯成产品.

MQ和仓库的区别是,仓库⾥放的是物品,MQ⾥放的是消息,仓库负责存储物品,并转发物品, MQ负责存储和转发消息

1. 异步解耦

在业务流程中,⼀些操作可能⾮常耗时,但并不需要即时返回结果.可以借助MQ把这些操作异步化

举例:用户注册

⽤⼾注册完后发送邮件通知,可以作为异步任务处理,⽽不必等待插入数据库等操作完成后才告知⽤⼾注册成功

2. 流量削峰

在访问量剧增的情况下,应⽤仍然需要继续发挥作⽤,但是这样的突发流量并不常⻅.如果以能处理这类峰值为标准⽽投⼊资源,⽆疑是巨⼤的浪费.使⽤MQ能够使关键组件⽀撑突发访问压⼒,不会因为突发流量⽽崩溃 

举例:大促

双十一时,用户请求很多,可以使⽤MQ来控制流量,将请求排队,然后系 统根据⾃⼰的处理能⼒逐步处理这些请求.

3. 消息分发

当多个系统需要对同⼀数据做出响应时,可以使⽤MQ进⾏消息分发

举例:支付系统

⽀付成功后,⽀付系统可以向商家,向平台财务部门等都发送通知

4. 延迟通知 

在需要在特定时间后发送通知的场景中,可以使⽤MQ的延迟消息功能

举例:支付

⽤⼾下单后⼀定时间内未⽀付,可以使⽤延迟队列在超时后⾃动取消订单


http://www.kler.cn/news/339956.html

相关文章:

  • Redis: 集群高可用之节点与插槽管理
  • 介绍C++
  • funasr: 报错 CUDA error: invalid device ordinal
  • GO语言中struct{}和struct{}{}区别
  • 10-记录器
  • 高精度分板机主轴4033AC气动自动换刀的优势特点
  • LSTM-Transformer时间序列预测(单输入单预测)——基于Pytorch框架
  • java家政预约上门系统源码,家政服务平台源码,基于SpringBoot框架,数据库使用MySQL,界面渲染采用Thymeleaf技术开发
  • 文件防泄密措施措施有哪些?5种文件防泄密措施等你体验!【小白成长篇!】
  • uniapp使用Vue3组合式,如何进行Vue模块自动导入
  • 初识Linux · 自主Shell编写
  • SpringBoot框架:服装生产管理的智能助手
  • Electron构建桌面应用程序,服务于项目的自主学习记录(持续更新...
  • 美团餐馆预订管理信息系统--课程设计李冬梅
  • 【计算机网络 - 基础问题】每日 3 题(三十)
  • 算法【更多二维动态规划题目】
  • vite学习教程03、vite+vue2打包配置
  • 如何在银河麒麟服务器中获取关键日志信息
  • wordpress在页面中调用另外一个页面的内容
  • 怎么将手机备忘录传送至电脑