MuleSoft:两个不同的REST调用的XA事务管理

时间:2018-10-02 20:04:09

标签: transactions mule mule-studio distributed-transactions xa

在这种情况下,我们需要跨多个rest api调用管理数据库事务。

在传统示例中,新客户是通过不同的微服务注册,订购和付款的。

我们确实有将用于业务规则实现的DB Micro REST服务以及SOAP和REST服务的组合的列表。

问题是:我如何围绕它添加事务管理包装,以便在只有一个失败时它将回滚db数据。

我准备了有关XA交易的博客,但无法从我打电话的地方获取如何在我的主项目中使用它 1. 5 DB Micro服务 2. 1外部SOAP服务 3. 2外部REST服务。

有人可以帮我吗?

预先感谢

1 个答案:

答案 0 :(得分:0)

SOAP en REST之类的Web技术不适合参与(XA)事务。创建它们是为了在可能位于世界另一端的独立系统之间进行通信。尽管在技术上可以使用SOAP来实现(请参阅google上的WS-Transaction),但我还是强烈建议您这样做,因为

  1. 要使其正常工作非常困难且容易出错。
  2. 性能真的很差。
  3. 您真的相信外部服务可以在您的公司中开始交易吗?您绝对无法控制事务将保持活动状态的时间,从而导致数据库中的锁可以迅速升级为表锁,从而使整个服务中断。

您需要一个完全不同的架构,其中包含佐贺故事,这些故事会编排对不同服务的调用,并包含重试或补偿逻辑以应对其中的任何失败。有很多关于生活的好文章,没有分布式事务来解释这些概念。太复杂了,在这里无法解释。