Spring批处理有两个数据库

时间:2016-01-06 14:57:06

标签: spring spring-batch jta transactionmanager

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

2 个答案:

答案 0 :(得分:1)

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

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

希望它有所帮助。

答案 1 :(得分:0)

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