跳过逻辑配置

在处理过程中遇到的错误不应该导致许多情形失败,但应被跳过。这通常是必须由理解数据本身及其意义的人做出的决定。财务数据,例如,可能无法跳过,因为它会导致资金被转移,而资金必须完全准确。另一方面,加载提供商列表可能允许跳过。如果提供商未加载是因为格式错误或缺少必要信息,通常不会有问题。通常,这些不良记录也会被记录,这在后面讨论听众时会详细说明。spring-doc.cadn.net.cn

以下 Java 示例展示了跳跃限制的示例:spring-doc.cadn.net.cn

Java 配置
@Bean
public Step step1(JobRepository jobRepository, PlatformTransactionManager transactionManager) {
    int skipLimit = 10;
    var skippableExceptions = Set.of(FlatFileParseException.class);
    SkipPolicy skipPolicy = new LimitCheckingExceptionHierarchySkipPolicy(skippableExceptions, skipLimit);

	return new StepBuilder("step1", jobRepository)
				.<String, String>chunk(10).transactionManager(transactionManager)
				.reader(flatFileItemReader())
				.writer(itemWriter())
				.faultTolerant()
				.skipPolicy(skipPolicy)
				.build();
}

注:该skip极限可以通过skipLimit()方法。spring-doc.cadn.net.cn

以下XML示例展示了使用跳跃限制的示例:spring-doc.cadn.net.cn

XML 配置
<step id="step1">
   <tasklet>
      <chunk reader="flatFileItemReader" writer="itemWriter"
             commit-interval="10" skip-limit="10">
         <skippable-exception-classes>
            <include class="org.springframework.batch.infrastructure.item.file.FlatFileParseException"/>
         </skippable-exception-classes>
      </chunk>
   </tasklet>
</step>

在上述例子中,aFlatFileItemReader被使用。如果在任一点,FlatFileParseException当被抛出时,该项被跳过并计入总数跳过限制 10。被声明的异常(及其子类)可能会被抛出在块处理的任何阶段(读、进程或写)中。不同的计数是通过在步骤执行中对读取、处理和写入的跳跃进行的,但该限制适用于所有跳跃。一旦跳过限制达到,下一个异常会使该步骤失败。换句话说,第十一个跳过触发的是异常,而不是第十个。spring-doc.cadn.net.cn

跳过限制适用于所有跳过(读取、处理和写入)。spring-doc.cadn.net.cn