本文已参与「新人创作礼」活动,一起开启掘金创作之路。
@TOC
什么是 RabbitMQ
RabbitMQ是一个基于高级消息队列协议(AMQP)的开源的消息队列中间件
RabbitMQ 用途
1. 异步
1.1 为什么要异步
主要目的是减少请求响应时间,实现非核心流程异步化,提高系统响应性能 (1)串行方式:
(2)并行方式:
(3)消息队列方式:
2. 解耦
如上,订单系统在下订单的时候不用关心后续操作了,如果订单系统不能正常使用。也不影响库存系统,实现订单系统与库存系统的解耦。
3. 流量削峰
应用场景:秒杀活动,一般会因为流量过大,应用系统配置承载不了这股瞬间流量,导致系统直接挂掉,即传说中的“宕机”现象。为解决这个问题,我们会将那股巨大的流量拒在系统的上层,即将其转移至 MQ 而不直接涌入我们的接口,此时MQ起到了缓冲作用。
RabbitMQ 中的核心概念
- 生产者(Producer):发送消息的应用。
- 消费者(Consumer):接收消息的应用。
- 交换器(Exchange):用来接收生产者发送的消息并将这些消息路由给服务器中的队列。
- 队列(Queue):存储消息的缓存。
- 绑定(Binding):就是将 交换器 和 消息队列连接起来
- 信道(Channel):复用一条 TCP 连接