场景:web系统跨域请求访问订单系统,在订单系统中修改商品库存,修改成功,也就是事务提交成功。当订单系统将result返回给web系统时,请求出现了异常,导致web系统没有获取到这个result,但是在订单系统已经修改了数据库,这种问题该怎么解决?
那就要必须有一个回滚的机制,我觉得这种应该是 一条线完全完成后再去修改,不应该是只当自己的任务完了就去修改。
推荐一篇文章,希望对你有帮助。
分布式开放消息系统(RocketMQ)的原理与实践
你的事务回滚是在订单系统中的,所以不管你有没有正确返回消息到web系统,事务都已经提交了.
你现在需要把整个事务放在web系统中,这样就能在web系统判断订单系统正确返回消息之后,才提交commit.