我的问题与 Spring 批处理和事务有关。
假设我为其中一个步骤选择了 commit-interval of 50。
还假设我总共有 1000 条记录,其中一条会导致 itemWriter 失败,从而导致整个 block 的回滚(在我的示例中为 50 条记录)。
在作业完成(并忽略有问题的 block )后确保将 49 条有效记录写入数据库的策略是什么?
最佳答案
经过一番研究,我得出了以下结论:
如果一个项目编写者未能提交一个 block (此处为 50 个项目)从而导致回滚,Spring Batch 将单独重新运行有问题的 block 的每个项目,并对每个项目进行一次提交/事务。
因此,除导致 Spring Batch 回滚 block 的一项外,所有 49 项都将出现在数据库中。
关于java - Spring批处理中的提交间隔和处理回滚,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11429197/