将Spring REST / SOAP服务注册到XA事务

时间:2018-02-02 20:31:58

标签: spring xa

我想到了一个理论上看起来对我来说可能的情景,但我在网上找不到任何信息。

技术环境是使用Spring的Java,但我对其他选择持开放态度。

我有一个使用@Transactional包装数据库事务的服务(ServiceA)。作为逻辑的一部分,它需要调用远程服务(例如,让我们假设REST,但SOAP或其他也可能适用)。此类服务(ServiceB)也使用@Transactional本身进行交易。

显然,可能存在一致性问题:例如,ServiceB可能在远程调用后COMMIT和ServiceA可能失败,因此ROLLBACK ......但ServiceB不是ROLLBACK。明显。

XA救援。理论上。 ServiceA可以启动XA分布式事务,ServiceB注册相同的XA分布式事务,当ServiceA结束时,它可以对ServiceB(及其DB)和自己的DB进行两阶段提交。

但是......我还没有找到这个设置的例子。我可以找到的每个分布式XA事务示例都使用同一服务中使用的两个DB(通常是一个SQL JDBC数据库和一个JMS)。

我是否有任何理论上的误解会导致此场景无法撤销?或者我在搜索Google时犯了错误?有这样的例子吗?

感谢。

PS:我了解其他解决方案,例如最终的一致性,但这不是我要问的。

0 个答案:

没有答案