Spring batch 跳过Spring批处理中的FlatFileParseException或特定异常
嗨,我需要读取平面文件的(n个)。在文件读取过程中,如果收到FileParseException:from reader,则停止当前文件读取并安全出来,处理下一个文件并继续执行作业。目前我有这个xml配置,但我不想使用它,因为我没有真正的跳过限制计数。使用ItemReaderListener是否有办法处理此情况Spring batch 跳过Spring批处理中的FlatFileParseException或特定异常,spring-batch,Spring Batch,嗨,我需要读取平面文件的(n个)。在文件读取过程中,如果收到FileParseException:from reader,则停止当前文件读取并安全出来,处理下一个文件并继续执行作业。目前我有这个xml配置,但我不想使用它,因为我没有真正的跳过限制计数。使用ItemReaderListener是否有办法处理此情况 <chunk reader="flatFileItemReader" writer="itemWriter" commit-interval="10" s
<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>
您可以使用策略,而不是指定跳过限制。有几种现成的跳过策略,听起来你总是想跳过(没有限制),使用AlwaysSkipItemSkipPolicy 配置示例:
<batch:skip-policy>
<bean:bean class="org.springframework.batch.core.step.skip.AlwaysSkipItemSkipPolicy"/>
</batch:skip-policy>
谢谢Doeleman,根据您的输入,我可以使用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"/>
公共类SkipPolicy扩展了AlwaysSkipItemSkipPolicy{
@凌驾
公共布尔值shouldSkip(java.lang.Throwable t,int skipCount){
if(非KippableReadException的t实例){
返回true;
}
返回false;
}
}
xml配置。
感谢Doeleman的宝贵意见,这可能是重复的。你的假设是正确的,只是我总是想跳过一些特殊的例外。请分享一些例子。只需在chunk元素中添加一个可跳过的异常类部分,如: