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

Transactions MuleSoft:两个不同REST调用的XA事务管理,transactions,mule,mule-studio,distributed-transactions,xa,Transactions,Mule,Mule Studio,Distributed Transactions,Xa,在这种情况下,我们需要跨多个RESTAPI调用管理db事务 在传统示例中,新客户通过不同的微服务进行注册、订购和付款 我们有DB Micro REST服务的列表以及SOAP和REST服务的组合,它们将用于业务规则的实现 问题是:我如何能够添加事务管理包装器,以便在只有一个数据库失败时回滚db数据 我已经准备好XA事务的博客,但无法从我调用的地方了解如何在我的主项目中使用它 1.5分贝微服务 2.1外部SOAP服务 3.2外部休息服务 有人能帮我吗 提前感谢像SOAP en REST这样的Web技

在这种情况下,我们需要跨多个RESTAPI调用管理db事务

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

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

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

我已经准备好XA事务的博客,但无法从我调用的地方了解如何在我的主项目中使用它 1.5分贝微服务 2.1外部SOAP服务 3.2外部休息服务

有人能帮我吗


提前感谢

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

  • 要使它正常工作非常困难,而且容易出错
  • 表现真的很差
  • 您真的信任外部服务在您的系统中启动事务吗?您完全无法控制事务将保持活动状态的时间,这会导致数据库中的锁迅速升级为表锁,从而导致整个服务停机

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

    你说得对,我们实现了自己的补偿逻辑