跳到主要内容
版本:6.0.2

配置重试逻辑

DeepSeek V3 中英对照 Configuring Retry Logic

在大多数情况下,您希望异常导致跳过或Step失败。然而,并非所有异常都是确定性的。如果在读取时遇到FlatFileParseException,该记录总是会抛出此异常。重置ItemReader也无济于事。然而,对于其他异常(例如DeadlockLoserDataAccessException,它表示当前进程尝试更新另一个进程持有锁的记录),等待并重试可能会成功。

在 Java 中,重试应配置如下:

@Bean
public Step step1(JobRepository jobRepository, PlatformTransactionManager transactionManager) {
// 重试策略配置
int retryLimit = 3;
var retrybaleExceptions = Set.of(DeadlockLoserDataAccessException.class);
RetryPolicy retryPolicy = RetryPolicy.builder()
.maxRetries(retryLimit)
.includes(retrybaleExceptions)
.build();

return new StepBuilder("step1", jobRepository)
.<String, String>chunk(2).transactionManager(transactionManager)
.reader(itemReader())
.writer(itemWriter())
.faultTolerant()
.retryPolicy(retryPolicy)
.build();
}

Step 允许设置单个项目可以重试的次数限制,以及一个“可重试”的异常列表。