RabbitMQ的应用场景
1. 异步处理
用户注册后,需要发注册邮件和注册短信,传统的方式:串行和并行。
串行:用户注册信息写入数据库 ------> 发送邮件 -------> 发送短信 ----->注册成功,用户使用
并行:用户注册信息写入数据库 ------> 发送邮件 / 发送短信 ------> 注册成功,用户使用
因为邮件和短信并不是注册所必需的,即使不接收邮件和短信,用户也可以进行操作了。
RMQ:用户注册信息写入数据库 ------> 写入消息队列 / 注册成功,用户使用 -------> 发送邮件 -----> 发送短信
2. 应用解耦
双11购物节,用户下单,订单系统需要通知库存系统,传统的做法是订单系统调用库存系统的接口,缺点:当库存系统出现故障,订单就会失败,会损失大量的订单。
传统:订单系统 ----调用库存接口-----> 库存系统
RMQ:订单系统 ---写入消息----> 消息队列 <-----订阅消息--库存系统
3. 流量削峰
秒杀活动,一般因为流量过大,导致某个应用挂掉,为了解决这个问题,一般在应用前端加入消息队列。
RMQ:用户请求---写入消息---> 消息队列 ----根据规则读取秒杀请求---> 秒杀业务处理系统
1、 用户的请求,服务器收到之后,会加入到消息队列,加入消息队列的消息达到最大值,直接抛弃用户请求,或跳转到错误页面。
2、秒杀业务根据消息队列的请求,再做后续处理。