01-为什么要使用RabbitMQ

28 阅读1分钟

一、举一个生活中的例子来帮助理解(快递小哥送快递):

image.png

引入蜂巢柜之后,原来同步的状态变为了异步,快递小哥无需等待了。

二、对应到我们的程序中

image.png

三、下面结合具体功能来看

image.png

同步状态下,必须每步都执行完,才能给用户返回响应。

image.png

对接消息队列之后,整个流程变为异步模式,只需把订单的编号存入消息队列当中,就可以给用户返回响应了,其余后续操作交给RabbitMQ来做。

问题1:

耦合度高

同步:其中有一个步骤失败,就给用户返回失败。

如果是异步下,订单号存入消息队列后,后续操作如果有失败的可以进行多次重试,实在不行人工干预处理。所以说引入消息队列,可以实现一个功能上的解耦。

问题2:

响应时间长

同步是串行执行,响应时间是整个链路时间之和。

异步很快

image.png

image.png 问题3:

并发压力传递

同步模式每一步都要承担相同的并发量

异步模式 可以调整一些参数,进行削峰限流

问题4:

系统结构弹性不足

image.png

image.png

完全符合开闭原则

小结

image.png