配置重試邏輯

在大多數情況下,您希望異常導致跳過或 Step 失敗。但是,並非所有異常都是確定性的。如果在讀取時遇到 FlatFileParseException,則該記錄始終會丟擲此異常。重置 ItemReader 無濟於事。但是,對於其他異常(例如 DeadlockLoserDataAccessException,它表示當前程序試圖更新另一個程序持有的鎖的記錄),等待並再次嘗試可能會成功。

  • Java

  • XML

在 Java 中,重試應按如下配置

@Bean
public Step step1(JobRepository jobRepository, PlatformTransactionManager transactionManager) {
    // retry policy configuration
    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();
}

在 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 允許限制單個專案可以重試的次數,以及“可重試”異常的列表。

© . This site is unofficial and not affiliated with VMware.