调用第三方接口成功后,如果自己本身接口报错,如何实现事务回滚?

it2026-06-11  9

解决思路如下:

1.创建事务

2.先更新本地状态(失败则回滚)

3.再调用第三方接口

4.根据接口返回值决定事务提交还是回滚

这样首先保证了本地数据能够更新,再根据接口返回值判断是否更新。

这种方法只是针对单一操作,如果是大量的批量操作,建议使用队列进行异步处理。

问题一:

在事务中去请求第三方接口,容易导致事务时间过长,对方接口超时多久,你的数据库事务也会卡多久

问题二 如果我们是接口提供方还是接口调用方,都需要考虑程序异常,网络超时问题、服务器重启、并发等问题。 为了保证提供方数据一致性,我们需要接口提供方具有的特性:

回调幂等性回滚数据提供结果查询

为了保证自身数据一致性,我们需要接口调用方的特性有:

幂等性重新执行(有一个事务补偿机制,可以选择把失败的事务操作放到队列中,异步执行,重新执行失败的操作,如果一直都不成功那就说明,服务器有问题或者那段业务逻辑中的某个环节出现了问题)或者要有记录数据变化的日志,如果出现异常,通过日志中的记录,把数据还原

参考文章

最新回复(0)