java - Spring批处理中的提交间隔和处理回滚

标签 java transactions spring-batch commit chunks

我的问题与 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/

相关文章:

spring-batch - spring 批处理条件 if 步骤

java - 如何从java映射: Map<String, ArrayList<String>>获取值?

mysql - 使用 MySQL 和 InnoDB 管理 Rails3 中的事务

mysql - 我可以在 InnoDB 事务期间检索挂起的查询吗?

Java Spring : JDBC Connection getting closed

spring-batch - 当 commitInterval = 1 时禁用重试

java - 用户 ID 的正则表达式

HTML 中嵌入 jar 的 Java Applet 安全问题

java - <ClassName> 在 Java 中代表什么?

java - Spring Batch-MySQL问题