RabbitMQ原理构成分析以及实战应用

一、RabbitMQ使用场景

为什么要使用RabbitMQ,可以通过以下场景来说明
场景:
比如用户在购物的时候,选中一件物品下单了,这时候就会发一个请求给我们的订单系统(Order),此时订单系统再发一个请求给我们的库存系统(stock)去修改库存,然后修改库,这里,我们的每一个请求都是一条消息,但是此时我们客户端在等待订单系统的消息,是否下单成功,但是订单系统并不需要知道库存系统(stock)的执行情况,因为无论库存系统是否修改库存成功或者库存修改出现BUG,我这条订单已经下了,因为是先下完了订单(下成功了) 才去更改库存, 库存如果更改出BUG了 那是库存系统的问题, 这个BUG不会影响订单系统
如果你可以理解这里,那我们就可以明白用户下订单“这条消息”是需要同步,我们需要知道下订单是否成功,但是订单系统(order)发消息给库存系统这条消息可以是异步的,我不需要知道你库存是否修改成功(我知道这里通知你我下单成功,然后你去修改库存即可)
这里有两套方案实现这个过程(案例引用的博客地址https://blog.csdn.net/qq_40708830/article/details/89454188)
方案一:
用户下完订单,订单发消息给库存,库存修改成功后返回消息,订单下成功了
RabbitMQ原理构成分析以及实战应用_第1张图片
很明显第一套方案耗时是我们下订单-订单系统-库存系统时间总和,这样总共耗时20min
那么有的同学可能会说订单系统-库存系统这个过程在订单系统中开辟新的线程去处理
RabbitMQ原理构成分析以及实战应用_第2张图片
这里下完订单后订单系统开辟新的线程去调用库存系统修改库存并同时返回下单的信息,使用新的线程确实可以解决,但是我们要自己去管理线程池,代码耦合度比较高
所以这时候RabbitMQ就上场了
RabbitMQ原理构成分析以及实战应用_第3张图片
这时候RabbitMQ就起了一个消息中间件的作用,中间人传递消息

二、RabbitMQ的组成以及实际应用

RabbitMQ中各个信息传递过程

你可能感兴趣的:(RabbitMQ,rabbitmq)