配置重試邏輯
在大多數情況下,您希望異常導致跳過或 Step
失敗。然而,並非所有異常都是確定性的。如果在讀取時遇到 FlatFileParseException
,該記錄總是會丟擲該異常。重置 ItemReader
沒有幫助。但是,對於其他異常(例如 DeadlockLoserDataAccessException
,表示當前程序試圖更新另一程序持有的鎖定記錄),等待並再次嘗試可能會成功。
-
Java
-
XML
在 Java 中,重試應按如下方式配置:
@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 中,重試應按如下方式配置:
<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>
Step
允許限制單個條目可以重試的次數,並提供一個“可重試”異常列表。您可以在重試中找到有關重試工作方式的更多詳細資訊。