【问题标题】:Spring Batch multiple datasources and ChainedTransactionManager risksSpring Batch 多数据源和 ChainedTransactionManager 风险
【发布时间】:2021-08-22 17:40:54
【问题描述】:

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

以下主题:Spring batch with MongoDB and transactions 和相关资源为我的问题提供了许多答案。 答案提到了使用 Spring 的JtaTransactionManager 来管理两个数据源上的分布式事务。 该技术使用 2PC 协议。如果我理解正确,这也是最强大的解决方案。 https://www.infoworld.com/article/2077963/distributed-transactions-in-spring--with-and-without-xa.html?page=2

另一方面,我找到了一些关于 Spring 的 ChainedTransactionManager 的资源。该技术使用尽力而为 1PC 协议。如果我理解正确,如果基础设施出现问题(例如网络故障),该解决方案可能会处于不一致的状态。 ChainedTransactionManager 的优点是更容易实现并提供更好的性能。我看到它已被弃用https://github.com/spring-projects/spring-data-commons/issues/2232。

在 Spring Batch 中使用 ChainedTransactionManager 有哪些具体风险?万一出错,Spring批处理元数据和Mongo中的业务数据是否不一致? 我想在重试或块跳过策略中还需要考虑一些因素?

非常感谢您的帮助。

【问题讨论】:

    标签: spring-batch


    【解决方案1】:

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

    是的,这是您应该注意的风险。

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

    【讨论】:

    • 感谢您的回答!
    猜你喜欢
    • 1970-01-01
    • 2016-06-16
    • 2014-10-21
    • 1970-01-01
    • 2020-11-03
    • 1970-01-01
    • 2018-01-27
    • 1970-01-01
    • 2017-02-16
    相关资源
    最近更新 更多