我正在做一些最近调用的远程api。这是背景。
在交易中,假设有一个支付工作流程,在客户通过paypal api成功完成支付后,我需要更新我的本地数据库(比方说更新order_table,更新score_table)。
就像这样:
全程交易
{
调用paypal api - 成功
更新order_table - 成功
update score_table - 失败
}
如果调用paypal api是一个调用update xxx_table的本地方法,那将非常简单,整个事务将回滚,但在远程api调用中,我只是无法回滚它。
问题是,我们是否有针对此案例的通用解决方案?
任何建议都将不胜感激。
答案 0 :(得分:0)
如果您的网络服务受到您的控制,您可以使用类似JBoss WS-Transactions或类似内容的内容,具体取决于您的环境。
访问第三方网络服务时,取决于他们是否提供类似的功能,如果不是,您必须自己进行回滚。
此外,分布式交易可能会导致比他们解决的问题更多的问题,因此您应该仔细考虑是否真的需要它们。