跳到主要内容
版本:6.0.2

提交间隔

DeepSeek V3 中英对照 The Commit Interval

如前所述,一个步骤会读取并写入条目,并定期使用提供的 PlatformTransactionManager 进行提交。当 commit-interval 设置为 1 时,它会在写入每个条目后提交。这在许多情况下并不理想,因为开始和提交事务的开销很大。理想情况下,最好在每个事务中处理尽可能多的条目,这完全取决于被处理的数据类型以及步骤与之交互的资源。因此,你可以配置在每次提交中处理的条目数量。

以下示例展示了一个 step,其 taskletcommit-interval 值为 10,这是在 Java 中的定义方式:

@Bean
public Job sampleJob(JobRepository jobRepository, Step step1) {
return new JobBuilder("sampleJob", jobRepository)
.start(step1)
.build();
}

@Bean
public Step step1(JobRepository jobRepository, PlatformTransactionManager transactionManager) {
return new StepBuilder("step1", jobRepository)
.<String, String>chunk(10).transactionManager(transactionManager)
.reader(itemReader())
.writer(itemWriter())
.build();
}

在前面的例子中,每个事务处理10个项目。处理开始时,会启动一个事务。此外,每次在 ItemReader 上调用 read 时,计数器都会递增。当计数器达到10时,聚合的项目列表会被传递给 ItemWriter,然后事务被提交。