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



我们遇到需要跨多个 rest api 调用管理数据库事务的情况。

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

我们确实有数据库微REST服务的列表以及SOAP和REST服务的组合,它们将用于业务规则实现。

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

我准备好了XA事务的博客,但无法从我调用的地方获得如何在我的主项目中使用 1. 5 数据库微服务 2. 1 个外部 SOAP 服务 3. 2 个外部 REST 服务。

有人可以帮助我吗?

提前致谢

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

  1. 让它正常工作是非常困难且容易出错的。
  2. 性能真的很差。
  3. 您真的信任外部服务在您的服务中启动事务吗? 您完全无法控制事务保持活动状态的时间,从而导致数据库中的锁定可以迅速升级到表锁定,从而使整个服务瘫痪。

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

最新更新