設定重試邏輯

在大多數情況下,您希望例外狀況導致跳過或 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 允許限制單個項目可以重試的次數,以及「可重試」的例外狀況清單。您可以在 retry 中找到有關重試如何運作的更多詳細資訊。