跳过Spring Batch中的FlatFileParseException或特定异常

时间:2016-02-26 19:06:21

标签: spring-batch

您好我需要读取(n号)平面文件。在文件读取期间如果收到FileParseException:从读取器然后停止当前文件读取并安全地出来并处理下一个文件并继续执行作业。目前我有这个xml配置,但我不想这样做,因为我没有真正的跳过限制计数。有没有办法处理这种情况可能是使用ItemReaderListener?

<chunk reader="flatFileItemReader" writer="itemWriter"
             commit-interval="10" skip-limit="2">
         <skippable-exception-classes>
            <include class="org.springframework.batch.item.file.FlatFileParseException"/>
         </skippable-exception-classes>

2 个答案:

答案 0 :(得分:0)

您可以使用策略,而不是指定跳过限制。有几个开箱即用的跳过策略,听起来你总是想跳过(没有限制),使用AlwaysSkipItemSkipPolicy。

示例配置:

<batch:skip-policy>   

     <bean:bean class="org.springframework.batch.core.step.skip.AlwaysSkipItemSkipPolicy"/>

</batch:skip-policy> 

答案 1 :(得分:0)

感谢Doeleman,根据您的输入,我可以跳过exception using AlwaysSkipItemSkipPolicy这就是我实施的方式

public class SkipPolicy extends  AlwaysSkipItemSkipPolicy  {

    @Override
     public boolean shouldSkip(java.lang.Throwable t, int skipCount){

        if(t instanceof NonSkippableReadException){
            return true;
        }
        return false;

     }
}

xml config.

<batch:chunk reader="cvsFileItemReader"  writer="mysqlItemWriter" 
                    commit-interval="2" skip-policy="mySkipPolicy">

<bean id="mySkipPolicy" class="com.model.SkipPolicy"/>