gpt4 book ai didi

java - spring batch 在作业存储库和实际任务之间使用不同的事务管理器

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:20:30 26 4
gpt4 key购买 nike

我使用 Spring Batch 使用 2 个(可能更多,为简单起见假设 2 个)数据库。一个用于存储所有作业数据(所有 BATCH_* 表)。另一个用于实际运行我的业务逻辑数据。有些事情我不太明白。

  1. 当我声明我的 JobRepository 时,我已经指定了我的 TransactionManager,为什么我必须在我的 tasklet 上再做一次?(我不是故意使用默认名称的)
  2. 我目前正在为 tasklet 提供与我的 JobRepository 相同的 TrasactionManager,它管理与我在步骤中所做的不同的连接。这是否意味着我在作者或读者内部进行了自己的事务管理?
  3. 如果#2 为真,How does Spring Batch transaction management work? 中的“假设”对我来说会是个问题(不做 XA)对吧?因为我的数据和工作数据在不同的连接中,对吧?

最佳答案

您可以为任务和作业存储库使用单独的事务管理器。看这里:http://forum.spring.io/forum/spring-projects/batch/39609-using-2-different-datasources-with-spring-batch

因此,需要指定其中的两个。

话虽这么说,即使您可以使用两个独立的事务管理器,但这并不意味着您应该这样做。如果您不采用 XA,那么想象一下如果业务流程成功运行但作业数据未保存会发生什么。下一次批处理运行时,Spring Batch 会认为作业失败,并尝试再次运行。

关于java - spring batch 在作业存储库和实际任务之间使用不同的事务管理器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32576456/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com