【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)高级消息队列协的消息中间件,它最初起源于金融系统领域,为了在分布式系统中存储和转发消息设计的~

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

相关推荐
爬山算法3 小时前
Redis(73)如何处理Redis分布式锁的死锁问题?
数据库·redis·分布式
祈祷苍天赐我java之术5 小时前
Redis 数据类型与使用场景
java·开发语言·前端·redis·分布式·spring·bootstrap
ZHE|张恒6 小时前
Docker 安装 RabbitMQ
docker·rabbitmq
猫林老师7 小时前
HarmonyOS线程模型与性能优化实战
数据库·分布式·harmonyos
在未来等你11 小时前
Elasticsearch面试精讲 Day 26:集群部署与配置最佳实践
大数据·分布式·elasticsearch·搜索引擎·面试
勤源科技11 小时前
分布式链路追踪中的上下文传播与一致性维护技术
分布式
互联网工匠12 小时前
分布式操作的一致性方案
分布式·架构
熊猫钓鱼>_>12 小时前
【案例实战】鸿蒙分布式智能办公应用的架构设计与性能优化
分布式·华为·harmonyos
没有bug.的程序员15 小时前
金融支付分布式架构实战:从理论到生产级实现
java·分布式·微服务·金融·架构·分布式调度系统
在未来等你15 小时前
Elasticsearch面试精讲 Day 25:Elasticsearch SQL与数据分析
大数据·分布式·elasticsearch·搜索引擎·面试