怎么保证调用三方接口后项目的数据一致性

通常在项目中会有业务需求需要调用第三方的接口或者合作平台,这时会有一个喜闻乐见的问题:在调用三方接口后,如果更新本地数据失败了,怎么办?

示例:本地项目需要推送订单的状态到第三方接口,并根据返回值更新本地订单状态为已推送,如果在第三方处处理成功并返回标识,但是在本地更新订单状态时出错了,就造成了本地数据和第三方数据不一致的情况。

解决:思路如下,可以先默认更改本地订单状态为已推送,然后调用三方接口,根据接口返回值进行回滚

1.创建事务

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

3.调用第三方接口

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

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

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

你可能感兴趣的:(业务逻辑)