RabbitMq产生背景:
原来不同的网络上的计算机相互通信,需要实现对方的通信协议。比如下图:

RabbitMq简介

2提供了一个接口,协议是Http,1想要调用2,必须实现Http协议。
引入Mq之后,1只需要建立和Mq的通信协议,不需要关心2的通信协议是什么。

RabbitMq的工作模型:
RabbitMq简介
这里涉及三大类:
生产者、消费者、中转站(RabbitMq),为什么生产者的消息不直接给消费者呢?这里就要说道RabbitMq的优点,概括将:
异步、解耦、削峰。
异步:

RabbitMq简介
左图是同步,请求发出之后,必须等到结果出来返回才接着做其他事;
右图是异步,请求发出,不必等结果出来,就去做其他事。

解耦:
举例:订单退货系统
RabbitMq简介
一个订单发生了退货,需要通知库存增加,支付系统退款,通知系统通知客户。
一般情况下,会在订单类中调用库存、支付、通知三个类,有了Mq,实现方式如下:
RabbitMq简介
订单系统发消息给消息队列,其他三个系统分别从消息队列中取消息,做自己的事。这样,系统之间就松耦合了。

削峰:
双11的时候,大家都在某个时间段开抢,这时候流量会达到一个峰值,后端大量的请求会访问数据库,而数据库的连接数是有限的,支持的并发数有限,此时可能会发生系统崩溃。而RabbitMq解决了这个问题,我们先把请求发送到Mq,再由消费者去Mq拿这个消息,按照可以承受的数量去处理。

Mq自己不生产消息,也不消费消息,只是一个中介。生产者产生的消息会存储在Queue中,底层是存在一个数据库里(Mnesia)。

相关文章:

  • 2021-11-21
猜你喜欢
  • 2021-12-23
  • 2021-12-12
相关资源
相似解决方案