跳到主要内容

提交间隔

QWen Plus 中英对照 The Commit Interval

如前所述,一个步骤(step)通过提供的 PlatformTransactionManager 读取和写入项目,并定期提交。当 commit-interval 设置为 1 时,它会在写入每个单独的项目后提交。在许多情况下,这并不是最佳选择,因为开始和提交事务的成本较高。理想情况下,最好在每次事务中处理尽可能多的项目,而这完全取决于所处理的数据类型以及步骤所交互的资源。因此,您可以配置每次提交时处理的项目数量。

下面的示例展示了在 Java 中定义的一个 step,其 taskletcommit-interval 值为 10:

@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)
.reader(itemReader())
.writer(itemWriter())
.build();
}
java

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