Spring batch Spring Batch多数据源和ChainedTransactionManager风险

Spring batch Spring Batch多数据源和ChainedTransactionManager风险,spring-batch,Spring Batch,我正在研究由两个数据源组成的Spring批处理的可行性。用于Spring批处理元数据的SQL数据源和用于业务数据的MongoDB数据源(具有事务用途)。事务方面在这里提出了几个问题 以下主题:和相关资源为我的问题提供了许多答案。 答案提到使用Spring的JtaTransactionManager管理两个数据源上的分布式事务。 该技术使用2PC协议。如果我理解正确,它也是最健壮的解决方案 另一方面,我找到了一些关于Spring的ChainedTransactionManager的参考资料。这项技

我正在研究由两个数据源组成的Spring批处理的可行性。用于Spring批处理元数据的SQL数据源和用于业务数据的MongoDB数据源(具有事务用途)。事务方面在这里提出了几个问题

以下主题:和相关资源为我的问题提供了许多答案。 答案提到使用Spring的
JtaTransactionManager
管理两个数据源上的分布式事务。 该技术使用2PC协议。如果我理解正确,它也是最健壮的解决方案

另一方面,我找到了一些关于Spring的
ChainedTransactionManager
的参考资料。这项技术使用了尽力而为的1PC协议。如果我正确理解,在基础设施出现问题(例如网络故障)时,系统可能处于不一致状态,则此解决方案的健壮性较差。
ChainedTransactionManager
的优点是易于实现,并提供更好的性能。我看到它被弃用了

在Spring批处理中使用ChainedTransactionManager的具体风险是什么?如果出现错误,Spring批处理元数据和Mongo中的业务数据之间是否存在不一致? 我想在使用重试或区块跳过策略时也需要考虑一些因素

非常感谢你的帮助

如果出现错误,Spring批处理元数据和Mongo中的业务数据之间是否存在不一致

是的,这是你应该意识到的风险


避免这种情况的一种常见技术是禁用状态管理并使用。你可以找到一个例子。

谢谢你的回答!