分布式事务之MQ可靠消息

本文探讨MQ可靠消息如何解决分布式事务的最终一致性问题,通过预发消息等步骤确保业务操作与消息发送的一致性。适用于充值业务和短时间多笔消费场景,但不适用于需强一致性的交易场景。

使用MQ可靠消息能够解决分布式事务的最终一致性,但不是实时一致(强一致性)。所以使用时要注意应用场景。

MQ可靠消息:

1.预发消息:MQ发送消息之前把消息的信息先存到数据库中留底,设置一个字段状态为待确认。(作用:能够知道这条消息是否发送成功,可进行人工补偿)

2.进行业务操作

3.向MQ发送消息,发送成功后把预发消息的状态改为发送中(表示成功发送),如果失败就不需要修改

应用场景:充值业务  订单->账务

充值成功后

第一步,将消息的信息先存到数据库中留底,设置一个字段状态为待确认(预发消息)

第二步,修改充值的订单状态为充值功能

第三步,发送MQ消息到账务系统,通知账务系统记录订单的账务明细

 

特殊MQ可靠消息保证事务的场景:用户短时间多笔消费  订单->账户扣款

如果消费时,先修改订单状态,再扣款。有10笔订单的消费状态都修成了成功,但是账户的余额不够钱扣除10笔订单。这样就会出问题了

解决的方案:用户消费时,先扣款再修改订单

不能使用MQ可靠消息保证事务的场景:交易完成后既要 扣款 也要 减库存。这种场场景要使用强一致性事务

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值