如果验证(违规计数)超过项目处理器中的某些预定义计数,则终止Spring Batch

时间:2015-12-08 11:33:39

标签: spring validation spring-batch

如果验证计数超过预定义的计数,Spring Batch中是否有任何方法可以阻止批处理进一步继续。

我目前正在从项目处理器中抛出验证异常。但它只是将项目从发送到项目编写者而不是停止批处理。

由于

1 个答案:

答案 0 :(得分:2)

如果您使用的是流畅的api(StepBuilder),您可以按如下方式设置:

@Bean
public Step step(){
    return stepBuilderFactory.get("step")
            .<... , ...>chunk(1) 
            .reader(reader())
            .processor(processor())
            .writer(writer())
            .faultTolerant()

            .skipLimit(10) 

            .build();
}

这将实例化为LimitCheckingItemSkipPoliciy。

您还可以使用skipPolicy方法

实例化或定义自己的SkipPolicy
        ...
        .faultTolerant()
        .skipPolicy(mySkipPolicy) 
        ...

如果要在XML配置中设置skiplimit:

<step id="step1">
   <tasklet>
      <chunk reader="flatFileItemReader" writer="itemWriter"
             commit-interval="10" 

             skip-limit="10">

         <skippable-exception-classes>
            <include class="..."/>
         </skippable-exception-classes>
      </chunk>
   </tasklet>
</step>