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

MuleSoft: XA Transaction management for two different REST Call

我们有一种情况需要跨多个 rest api 调用管理数据库事务。

在使用不同的微服务注册、订购和支付新客户的传统示例中。

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

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

我准备了 XA Transactions 的博客,但无法从我调用的地方了解如何在我的主项目中使用它 1. 5个DB微服务 2. 1 外部 SOAP 服务 3. 2 外部 REST 服务。

有人可以帮我吗?

提前致谢

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

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

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