RabbitMQ的应用场景

1. 异步处理

用户注册后,需要发注册邮件和注册短信,传统的方式:串行和并行。

串行:用户注册信息写入数据库 ------>  发送邮件 -------> 发送短信 ----->注册成功,用户使用

并行:用户注册信息写入数据库 ------>  发送邮件 / 发送短信  ------> 注册成功,用户使用

因为邮件和短信并不是注册所必需的,即使不接收邮件和短信,用户也可以进行操作了。

RMQ:用户注册信息写入数据库 ------>  写入消息队列 / 注册成功,用户使用 -------> 发送邮件 -----> 发送短信

2. 应用解耦

双11购物节,用户下单,订单系统需要通知库存系统,传统的做法是订单系统调用库存系统的接口,缺点:当库存系统出现故障,订单就会失败,会损失大量的订单。 

传统:订单系统 ----调用库存接口-----> 库存系统

RMQ:订单系统  ---写入消息----> 消息队列 <-----订阅消息--库存系统

3. 流量削峰

秒杀活动,一般因为流量过大,导致某个应用挂掉,为了解决这个问题,一般在应用前端加入消息队列。

RMQ:用户请求---写入消息---> 消息队列 ----根据规则读取秒杀请求---> 秒杀业务处理系统

  1、 用户的请求,服务器收到之后,会加入到消息队列,加入消息队列的消息达到最大值,直接抛弃用户请求,或跳转到错误页面。

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

原文地址:https://www.cnblogs.com/tianyee/p/13648779.html