Spring Batch:OnSkipInWrite两次打印日志???怎么样 ?

时间:2012-07-12 09:14:30

标签: spring-batch

我在执行弹簧批时遇到了一个奇怪的情况。我已将我的作业步骤执行配置为使用“skippable-exception-classes”作为

<step id="prepareFileStep" next="fillRecordsCounterStep">
<tasklet>
   <chunk reader="stagingIdReader" writer="customerIdRecordCompWriter" commit-interval="50" skip-limit="200">
    <streams>
         <stream ref="flatFileRecordWriter" />
    </streams>
    <skippable-exception-classes>
         <include class="java.lang.Exception" /> 
    </skippable-exception-classes>
</chunk>
<listeners>
         <listener ref="prepareFlatFileSkipListener" />
    <listener ref="prepareFlatFileStepListener" />
</listeners>
</tasklet>

我的onSkipInWrite()实现为:

@OnSkipInWrite
public void onSkipInWrite(Object item, Throwable exception) {
    AppLog.warn(AppConstants.CALLER, "Skipping Customer Id:"+ item.getCustomer().getCustomerId()+"\n" + exception.toString());
}

我想知道为什么日志文件打印过两次跳过的项目,当我调试它时只执行一次?请建议我修复朋友......

1 个答案:

答案 0 :(得分:1)

最有可能是因为Spring批量块已经回滚并且一次作为一个块项重新重试(而不是整个块大小):

Spring Batch: skipping during item write