RabbitMQ有哪些使用场景或者你们业务都什么地方使用MQ,其实都是一类问题。
RabbitMQ主要的应用场景如下:
异步任务
将业务中属于非核心或不重要的流程部分,使用消息异步通知的方式发给目标系统,这样主业务流程无需同步等待其他系统的处理结果,从而达到系统快速响应的目的。服务间异步通信
多个服务之间或者系统之间,通过消息互相通信,就大家平时跟朋友互发短信差不多。应用解耦
基于消息订阅机制实现业务扩展,例如:电商下单场景,用户下单之后,产生一条订单消息,然后仓库模块订阅订单消息发货、积分模块可以订阅订单消息增加积分、短信模块可用订阅订单消息发送短信等等。
顺序消费
业务层面需要排队处理的场景,例如:活动报名,名额有限,先到先得。定时任务
通过消息队列的延迟消息机制,可以实现定时执行任务的效果,例如:订单15分钟内未支付,则关闭订单,下单的时候发送一条延迟15分钟的消息,15分钟后消息才会投递给消费者处理。提示:详情可以参考延迟队列章节。
请求削峰
因为上下游系统之间处理流量的能力存在差异,消息队列可以起到调节作用,让下游系统可以匀速处理流量,跟排队挤地铁是一个意思,因为地铁站的吞吐量有限,一下子无法容纳太多人,通过排队进站的方式,可以避免地铁站超负荷,维持在一个稳定运转的状态。