【问题标题】:Spring Batch with two databasesSpring Batch 有两个数据库
【发布时间】:2016-01-06 14:57:06
【问题描述】:

我有一个使用两个数据库的 Spring Batch 应用程序。一个用于作业存储库和一个包含业务数据的数据库。目前,我为这些数据源使用了两个不同的事务管理器,但我公司的一些人建议使用单个 JTA TransactionManager(带有 XA)。这真的正确吗?如果对业务数据库的事务失败,这是否意味着对作业存储库的任何更新也会回滚?这可能是不可取的。在这种情况下,最佳做法是什么?

【问题讨论】:

  • 分布式事务 (XA) 是解决您的问题的唯一方法(当 SB 元数据和业务数据表位于不同的数据源上时)

标签: spring spring-batch jta transactionmanager


【解决方案1】:

恕我直言,使用 JTA 绑定两个数据源不是一个好的选择。想象一下,如果业务事务回滚,此时如果启用了 JTA,您将无法提交 Spring Batch 事务,因此您将无法在 Spring Batch 数据库中更新您的 Batch 的当前状态。

您可以尝试强制回滚业务事务并查看影响。

希望对你有帮助。

【讨论】:

    【解决方案2】:

    对于两个不同的数据源,使用 XADataSource 和 Atomikos 之类的事务管理器可能会更好。但是,根据您的输入,这两个数据源不必位于单个事务管理器下,因为作业存储库是一种状态管理策略。我可能会建议连接 2 个不同的事务管理器。 在 Spring 论坛中查看此链接:2 Datasources

    【讨论】:

      猜你喜欢
      • 2020-12-06
      • 1970-01-01
      • 2015-08-12
      • 2021-02-25
      • 1970-01-01
      • 2020-11-10
      • 2020-12-31
      • 2020-08-15
      • 2019-04-24
      相关资源
      最近更新 更多