2014-11-06 103 views
0

我正在调用最近的一些远程API。这是背景。Web服务事务控制

在一个交易中,比方说一个支付工作流程,当客户通过paypal api成功完成支付后,我需要更新我的本地数据库(假设更新order_table,更新score_table)。

这将是这样的:

整个交易
{
援引贝宝API - 成功
更新order_table - 成功
更新score_table - 失败
}

如果调用贝宝的API一个本地方法调用更新xxx_table,这将是非常简单的,整个事务将回滚,但在一个远程API调用,我只是不能回滚它。

问题出在这里,我们有这个案例的通用解决方案吗?

任何建议,将不胜感激。

+0

所以问题是如何回滚paypal api的调用? AFAIK你必须自己回滚,例如通过挂钩事务回滚的回调。 – Thomas 2014-11-06 08:37:15

+0

@Thomas,好吧,我使用paypal来演示这个案例。更精确地说,如何在Web服务调用中进行事务控制。 – user889630 2014-11-06 08:49:22

回答

0

如果web服务在您的控制之下,您可以使用类似JBoss WS-Transactions或类似的东西,具体取决于您的环境。

当访问第三方网络服务时,它取决于它们是否提供了这样的功能,如果不是,你必须自己回滚。

除了分布式事务可能会导致比他们解决更多的问题,所以你应该仔细考虑你是否真的需要它们。