RabbitMQ概述

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

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

什么是MQ

MQ(message queue),本身是个队列,FIFO先入先出,只不过队列中存放的内容是消息而已,消息可以非常简单,比如只包含文本字符串,JSON等,也可以很复杂,比如内嵌对象。

MQ多用于分布式系统之间进行通信.

系统之间的调用通常有两种方式:

1.同步通信

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

2.异步通信

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

MQ的作用

MQ的主要工作是接收并转发消息,在不同的应用场景可以展现不同的作用。
可以把MQ想象成⼀个仓库. 采购部⻔进货之后, 把零件放进仓库⾥, ⽣产部⻔从仓库中取出零件, 并加⼯成产品. MQ和仓库的区别是, 仓库⾥放的是物品, MQ⾥放的是消息, 仓库负责存储物品,并转发物品,MQ负责存储和转发消息

1.异步解耦:
在业务流程中, ⼀些操作可能⾮常耗时, 但并不需要即时返回结果. 可以借助MQ把这些操
作异步化, ⽐如 ⽤⼾注册后发送注册短信或邮件通知, 可以作为异步任务处理, ⽽不必等待这些操作完成后才告知⽤⼾注册成功。
2.流量削峰:
在访问量剧增的情况下, 应⽤仍然需要继续发挥作⽤, 但是这样的突发流量并不常⻅. 如果
以能处理这类峰值为标准⽽投⼊资源,⽆疑是巨⼤的浪费. 使⽤MQ能够使关键组件⽀撑突发访问压⼒, 不会因为突发流量⽽崩溃. ⽐如秒杀或者促销活动, 可以使⽤MQ来控制流量, 将请求排队, 然后系统根据⾃⼰的处理能⼒逐步处理这些请求。
3.消息分发:
当多个系统需要对同⼀数据做出响应时, 可以使⽤MQ进⾏消息分发. ⽐如⽀付成功后, ⽀
付系统可以向MQ发送消息, 其他系统订阅该消息, ⽽⽆需轮询数据库.
4.延迟通知:
在需要在特定时间后发送通知的场景中,可以使用MQ的延迟消息功能,比如在电子商务平台中,如果用户下单后一定时间内未支付,可以使用延迟队列在超时后自动取消订单。

相关推荐
heartbeat..34 分钟前
深入理解 Redisson:分布式锁原理、特性与生产级应用(Java 版)
java·分布式·线程·redisson·
ha_lydms3 小时前
Kafka如何提高读写效率
分布式·kafka
武子康4 小时前
Java-195 RabbitMQ BlockingQueue 手搓“消息中间件”雏形:生产者-消费者模型到企业级 MQ 差在哪
java·分布式·架构·消息队列·rabbitmq·java-rabbitmq·mq
song5014 小时前
鸿蒙 Flutter 复杂表单验证:自定义规则与联动逻辑
分布式·python·flutter·ci/cd·分类
音符犹如代码5 小时前
深入解析 Apollo:微服务时代的配置管理利器
java·分布式·后端·微服务·中间件·架构
招风的黑耳5 小时前
拆解基于SpringCloud社区团购项目:微服务划分与分布式事务实战
分布式·spring cloud·微服务
鸿蒙小白龙5 小时前
OpenHarmony LiteOS-A/M 版本迭代与演进对照
分布式·openharmony
狮恒6 小时前
OpenHarmony Flutter 分布式数据持久化:跨设备数据一致性与同步方案
分布式·flutter·wpf·openharmony
武子康6 小时前
Java-196 消息队列选型:RabbitMQ vs RocketMQ vs Kafka
java·分布式·kafka·rabbitmq·rocketmq·java-rocketmq·java-rabbitmq