在项目中有异步、解耦、销峰的作用:
异步:当前端获取用户订单信息的时候,会请求后端的订单创建接口。这个订单创建接口并不直接请求订单服务,而是先生成一个唯一订单编号,再组装一个订单消息发送给 RabbitMQ,然后返回唯一订单编号给前端。前端根据唯一订单编号轮询地访问订单状态接口获取订单状态,如果订单创建成功,则拉起支付界面引导用户付费。
解耦:当用户下单成功时会给用户发送一个成功下单的消息,在没有用的消息队列的时候,我们是直接调用给用户发送短信的这个接口,如果说这个接口出现了问题或者是调用这个接口的运营商出现了问题,这时候的话我们的系统就会被阻塞到,一旦下单成功的短信发不出去了,那这个订单系统就是不完整的。所以这里用 RabbitMQ 消息队列来进行解耦来解决这种问题。
销峰:用消息队列还有削锋的作用,利用消息队列先进先出的特点,当项目中出现秒杀的情况时,并发量比较大,如果一条一条处理的话,无论是系统还是运营商那边,压力都是扛不住的,不利于系统的操作,所以这时候用消息队列将大量涌进来的订单先积压,然后按系统能力来逐个解决。
RabbitMQ 消息队列参考一文: