0
点赞
收藏
分享

微信扫一扫

RabbitMQ到底是什么?

秀儿2020 2022-03-14 阅读 88

目录

一、MQ是什么?

二、MQ的使用场景

2.1 异步处理

🚀 易错概念讲解

🌴 传统的做法

🌵 使用消息队列

2.2 应用解耦

🌴 传统做法

🌵 使用消息队列

2.3 流量削锋

2.4 日志处理

2.5 消息通讯

三、使用MQ的好处

四、RabbitMQ介绍

五、为什么要选择RabbitMQ?

六、RabbitMQ 特点

七、RabbitMQ的基本概念

小结


一、MQ是什么?

二、MQ的使用场景

2.1 异步处理

🚀 易错概念讲解

场景说明:用户注册后,需要发注册邮件和注册短信。

🌴 传统的做法

(1)串行的方式

(2)并行方式

🔥 分析

🌵 使用消息队列

🔥 分析:

2.2 应用解耦

场景说明:用户下单后,订单系统需要通知库存系统。

🌴 传统做法

订单系统调用库存系统的接口。如下图:

🌵 使用消息队列

订单系统:用户下单后,订单系统完成持久化处理,将消息写入消息队列,返回用户订单下单成功。
库存系统:订阅下单的消息,采用拉/推的方式,获取下单信息,库存系统根据下单信息,进行库存操作。

2.3 流量削锋


应用场景:秒杀活动,一般会因为流量过大,导致流量暴增,应用挂掉。为解决这个问题,一般需要在应用前端加入消息队列。


a、可以控制活动的人数
b、可以缓解短时间内高流量压垮应用

用户的请求,服务器接收后,首先写入消息队列。假如消息队列长度超过最大数量,则直接抛弃用户请求或跳转到错误页面。

秒杀业务根据消息队列中的请求信息,再做后续处理 

2.4 日志处理

日志采集客户端:负责日志数据采集,定时写受写入Kafka队列。
Kafka消息队列:负责日志数据的接收,存储和转发。
日志处理应用:订阅并消费kafka队列中的日志数据 。

2.5 消息通讯


🚀 点对点通讯:

客户端A和客户端B使用同一队列,进行消息通讯。

🚀 聊天室通讯:

客户端A,客户端B,客户端N订阅同一主题,进行消息发布和接收。实现类似聊天室效果。

以上实际是消息队列的两种消息模式,点对点或发布订阅模式

三、使用MQ的好处

(1)降低了两台服务器之间的耦合,哪怕是一台服务器挂了,另外一台服务器也不会报错或者休克,因为其监听的是MQ,只要服务器恢复再重新连上MQ发送消息,监听服务器就能再次接收。

(2)MQ作为一个仓库,本身就提供了非常强大的功能,例如不再是简单的一对一功能,还能一对多,多对一,类似补保险箱场景,只要有特定的密码,谁都能存,谁都能取。也就是说能实现群发消息和以此衍生的功能。 

(3)普遍化的持久化功能,当MQ挂掉可以存储在磁盘等下重启恢复。(需要设置)

四、RabbitMQ介绍

五、为什么要选择RabbitMQ?

我们常见的消息中间件其实不单单只有RabbitMQ,还有ActiveMQKafka以及RocketMQ等。以下就是我们选中RabbitMQ的理由:


六、RabbitMQ 特点

(1)可靠性

(2)灵活的路由

(3)消息集群

(4)高可用

(5)多种协议

(6)多语言客户端

(7)管理界面

(8)跟踪机制

(9)插件机制


 

七、RabbitMQ的基本概念

🚀 Producer消息的生产者,也是一个向交换器发布消息的客户端应用程序。

🚀 Consumer消息的消费者,表示一个从一个消息队列中取得消息的客户端应用程序。

🚀 Broker接受客户端的链接,实现AMQP实体的服务。

🚀 Connection生产者、消费者与broker之间的TCP链接。

🚀 Channel如果每一次访问RabbitMQ都建立一个connection,在有消息量大的时候建立大量的TCP链接的开销太大,效率也低。channel是在connection内部建立的逻辑链接,channel之间完全隔离,这样就减少了系统频繁创建TCP链接的开销。

🚀 Exchangemessage到达broker的第一站,根据分发规则,匹配routing key,将消息分发到queue中去。常用的类型有direct(点对点)、topic(规则匹配)、fanout(广播)。

🚀 Queue消息最终被送到这里等待consumer。

🚀 Bindingexchange和queue之间的虚拟链接,binding中包含routing key,binding信息保存到exchange的查询表中,用于message的分发。

🚀 Virtual host出于多租户和安全因素,把AMQP的基本组件划分到一个虚拟的分组中,类似于网络中的namespace概念。当多个不同的用户使用同一个RabbitMQ server提供的服务时,可以划分出多个vhost,每个用户在自己的vhost中创建exchange、queue等。


小结

以上就是【一心同学】整理的【消息队列MQ】以及其【RabbitMQ】的讲解了,看完【一心同学】的陈述,是不是对【RabbitMQ】不再陌生了,在接下来我博客里,我将会继续讲解【RabbitMQ的更多操作】。

举报

相关推荐

0 条评论