使用MQ来保证分布式事务的最终一致性
使用MQ来保证分布式事务的最终一致性
参考URL:https://www.bbsmax.com/A/obzbM9QVdE/
生产者的逻辑
1、订单入库
2、消息记录入库
3、发送消息(采用确认模式)
4、mq收到消息之后给生产端一个确认消息
5、生产端监听这个确认消息
6、根据监听结果操作消息表的状态
7、定时任务定时去操作消息状态为1未发送的记录,就是那些没有监听到结果的记录进行重新发送
消费者的逻辑
1、将收到消息的消息入库
2、处理消息失败消息记录的状态就为未处理
3、处理消息成功修改消息记录的状态为处理成功
4、收到相同的消息id的消息直接丢弃
5、定时任务去操作那些未处理,并且已经经过一段时间的消息
6、针对那些一直处理失败的,且很长一段时间都没办法处理成功的消息交由人工或者其他途径处理
需要注意的问题
1、消息的100%投递
首先我们需要保证的就是消息一定要投递出去,要是我们消息都不能保证投递成功,那么后面的逻辑就走不下去了。
2、我们需要保证幂等性(无论多少次操作,最后造成的结果和只执行一次造成的结果是一样的。)
消息肯定会出现重复投递的问题,这里应该由消费端去保证,重复的消息不能进行消费
而保证这两个问题的方式就藏在上面的逻辑流程图中,请仔细揣摩其中的用意。
本文阐述了通过消息队列(MQ)确保分布式事务最终一致性的方法。详细介绍了生产者和消费者的逻辑流程,包括消息的投递确认、消息状态更新及定时重发机制,以及如何处理消息幂等性和重复投递问题。
687

被折叠的 条评论
为什么被折叠?



