【发布时间】:2015-05-31 22:14:58
【问题描述】:
我试图了解 Spring Batch 如何进行事务管理。这不是技术问题,而是概念问题:Spring Batch 使用什么方法以及该方法的后果是什么?
让我试着澄清一下这个问题。例如,查看 TaskletStep,我发现通常步骤执行看起来像这样:
- 几个JobRepository 事务来准备步骤元数据
- 每个要处理的块的业务交易
- 更多JobRepository 事务以使用块处理的结果更新步骤元数据
这似乎是有道理的。但是 2 和 3 之间的失败呢?这意味着业务事务已提交,但 Spring Batch 无法在其内部元数据中记录该事实。因此,即使它们已经提交,重启也会再次重新处理相同的项目。对吧?
我正在寻找对这些细节的解释以及在 Spring Batch 中做出的设计决策的后果。这是在某处记录的吗? Spring Batch 参考指南对此的细节很少。它只是从应用程序开发人员的角度解释事情。
【问题讨论】:
标签: spring-batch