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的延迟消息功能

举例:支付

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

相关推荐
老友@2 小时前
服务器异常宕机或重启导致 RabbitMQ 启动失败问题分析与解决方案
服务器·rabbitmq·启动失败·宕机
hjs_deeplearning3 小时前
认知篇#10:何为分布式与多智能体?二者联系?
人工智能·分布式·深度学习·学习·agent·智能体
小毛驴8503 小时前
Windows 环境下设置 RabbitMQ 的 consumer_timeout 参数
windows·分布式·rabbitmq
wowocpp3 小时前
rabbitmq 与 Erlang 的版本对照表 win10 安装方法
java·rabbitmq·erlang
述雾学java5 小时前
Spring Cloud 服务追踪实战:使用 Zipkin 构建分布式链路追踪
分布式·spring·spring cloud·zipkin
大只鹅5 小时前
分布式部署下如何做接口防抖---使用分布式锁
redis·分布式
weixin_438335405 小时前
分布式定时任务:xxl-job
分布式
大数据CLUB5 小时前
基于spark的航班价格分析预测及可视化
大数据·hadoop·分布式·数据分析·spark·数据可视化
sanggou5 小时前
GoFastDFS:轻量级高性能分布式文件存储解决方案(Linux安装部署)
分布式
ℳ₯㎕ddzོꦿ࿐5 小时前
Spring Boot 集成 MinIO 实现分布式文件存储与管理
spring boot·分布式·后端