跳转至

适用场景

RabbitMQ 适用的场景广泛,本节列觉了几个典型场景。

异步处理

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

引入消息队列后,用户的响应时间就等于写入数据库的时间 + 写入消息队列的时间(这个可以忽略不计)。 引入消息队列后处理后,响应时间是串行的 3 倍,是并行的 2 倍。

异步处理

应用解耦

场景说明:在促销活动时用户下单数量激增,用户下单后,订单系统需要通知库存系统。

传统的做法就是订单系统调用库存系统的接口,这会导致库存系统出现故障时,订单会失败。 如果使用消息队列(如下图),用户下单后,订单系统完成持久化处理,将消息写入消息队列,返回用户订单下单成功。 订阅下单的消息,获取下单消息,进行库操作。就算库存系统出现故障,消息队列也能保证消息的可靠投递,不会导致消息丢失。

应用解耦

流量削峰

场景说明:某平台策划的秒杀活动,一般会因为流量过大,导致应用不可用。

为了解决这个问题,一般在应用前端加入消息队列。 通过消息队列可以控制活动人数,超过此一定阀值的订单直接丢弃,同时可以缓解短时间的高流量压垮应用。 服务器收到用户的请求之后,首先写入消息队列,假如消息队列长度超过最大值,则直接抛弃用户请求或跳转到错误页面。 秒杀业务根据消息队列中的请求信息,再做后续处理。

流量削峰

评论