我们先了解一下-敖汉旗哪里有餐饮费发票-敖汉旗-在分布式应用中,

我们小伙伴应该都听说够消息中间件 MQ,如:RabbitMQ,RocketMQ,Kafka 等。引入中间件的好处可以起到抗高并发,削峰,业务解耦的作用。
null
上图
1)订单服务投递消息给 MQ 中间件
2)物流服务监听 MQ 中间件消息,从而进行消费
我们这篇文章讨论一下,如何保障订单服务把消息成功投递给 MQ 中间件,以 RabbitMQ 举例。
分析问题

小伙伴们对此会有些疑问,订单服务发起消息服务,返回成功不就成功了吗?如下面的伪代码
null
上面代码中,一般发送消息就是这么写的,小伙伴们觉得有什么问题吗?
老顾说一个场景,如果 MQ 服务器突然宕机了会出现什么情况?是不是我们订单服务发过去的消息全部没有了吗?是的,一般 MQ 中间件为了提高系统的吞吐量会把消息保存在内存中,如果不作其他处理,MQ 服务器一旦宕机,消息将全部丢失。这个是业务不允许的,造成很大的影响。