Web服务事务控制
问题描述:
我正在调用最近的一些远程API。这是背景。Web服务事务控制
在一个交易中,比方说一个支付工作流程,当客户通过paypal api成功完成支付后,我需要更新我的本地数据库(假设更新order_table,更新score_table)。
这将是这样的:
整个交易
{
援引贝宝API - 成功
更新order_table - 成功
更新score_table - 失败
}
如果调用贝宝的API一个本地方法调用更新xxx_table,这将是非常简单的,整个事务将回滚,但在一个远程API调用,我只是不能回滚它。
问题出在这里,我们有这个案例的通用解决方案吗?
任何建议,将不胜感激。
答
如果web服务在您的控制之下,您可以使用类似JBoss WS-Transactions或类似的东西,具体取决于您的环境。
当访问第三方网络服务时,它取决于它们是否提供了这样的功能,如果不是,你必须自己回滚。
除了分布式事务可能会导致比他们解决更多的问题,所以你应该仔细考虑你是否真的需要它们。
所以问题是如何回滚paypal api的调用? AFAIK你必须自己回滚,例如通过挂钩事务回滚的回调。 – Thomas 2014-11-06 08:37:15
@Thomas,好吧,我使用paypal来演示这个案例。更精确地说,如何在Web服务调用中进行事务控制。 – user889630 2014-11-06 08:49:22