RabbitMQ

RabbitMQ

为什么使用MQ

流量削峰:解决高并发问题


例如秒杀活动,可能会在短时间内产生大量请求同时打到服务端,如果后端对每个请求都进行数据库读写操作,定会造成服务器压力过大,产生服务异常甚至不可用。我们可以通过使用MQ实现流量缓冲,将所有请求先放入消息队列中,服务端每次处理业务先从消息队列获取,从而实现流量削峰,解决高并发问题。

应用解耦:提升系统可用性


例如电商应用中有订单系统、库存系统、物流系统、支付系统,当用户创建订单后,先后调用库存系统、物流系统、支付系统,任何一个子系统出了故障,都会造成下单失败。引入消息队列后,系统间耦合调用的问题会减少,任何一个子系统出现故障都不会影响用户下单,子系统故障恢复后,会继续处理消息,提升系统可用性。


Jingxc大约 11 分钟java后端java后端RabbitMQ
消息中间件

消息中间件

还是本分区惯例,旨在快速集成,如需了解概念性知识点,请查阅分区知识点-RabbitMq

docker安装RabbitMQ

用于demo测试,在本机安装RabbitMQ,这里使用docker 进行安装

#查看版本
docker search rabbitmq

jingxc@JingxcdeMacBook-Pro ~ % docker search rabbitmq
NAME                                      DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
rabbitmq                                  RabbitMQ is an open source multi-protocol me…   4763      [OK]       
bitnami/rabbitmq                          Bitnami Docker Image for RabbitMQ               97                   [OK]
masstransit/rabbitmq                                                                      11                   
bitnami/rabbitmq-exporter                                                                 2                    
exozet/rabbitmq-delay-management          deprecated                                      1                    
circleci/rabbitmq-delayed                 https://github.com/circleci/rabbitmq-delayed…   1                    
nasqueron/rabbitmqadmin                   RabbitMQ management plugin CLI tool Lightwei…   1                    [OK]

# 下载合适的版本,这里下载了最新的版本,下载其他的版本可用docker pull rabbitmq:v
docker pull rabbitmq

# 启用
docker run -di --name rabbit-mq -p 5672:5672 -p 15672:15672 rabbitmq
## 由于调试用启用这两个接口就可以了

Jingxc大约 17 分钟java后端java后端RabbitMQ