对于最新稳定版本,请使用Spring Batch Documentation 6.0.0spring-doc.cadn.net.cn

配置重试逻辑

在大多数情况下,你希望通过例外来导致跳过或失败。然而 并非所有例外都是确定性的。如果FlatFileParseException在 雷丁,总是被掷出那个纪录。重置ItemReader没用。 然而,对于其他例外情况(例如DeadlockLoserDataAccessException哪 表示当前进程尝试更新另一进程的记录 保持锁定),等待并再次尝试可能会成功。spring-doc.cadn.net.cn

在 Java 中,重试应配置如下:spring-doc.cadn.net.cn

@Bean
public Step step1(JobRepository jobRepository, PlatformTransactionManager transactionManager) {
	return new StepBuilder("step1", jobRepository)
				.<String, String>chunk(2, transactionManager)
				.reader(itemReader())
				.writer(itemWriter())
				.faultTolerant()
				.retryLimit(3)
				.retry(DeadlockLoserDataAccessException.class)
				.build();
}

在 XML 中,重试应配置如下:spring-doc.cadn.net.cn

<step id="step1">
   <tasklet>
      <chunk reader="itemReader" writer="itemWriter"
             commit-interval="2" retry-limit="3">
         <retryable-exception-classes>
            <include class="org.springframework.dao.DeadlockLoserDataAccessException"/>
         </retryable-exception-classes>
      </chunk>
   </tasklet>
</step>

允许对单个项目的重试次数设定限制,并且 “可重试”的例外列表。你可以在《重试》中找到更多关于重试机制的细节。spring-doc.cadn.net.cn