我们有一个业务需求来处理尽可能多的文件,然后移动
如果记录 98 中有 100 条记录的文件中存在错误,我们希望能够处理到该点并跳过文件的其余部分,继续下一个文件。
我们正在处理 MultiResourcePartitioner 中的文件。
<batch:step id="processXMLstep">
<batch:tasklet transaction-manager="transactionManager">
<batch:chunk reader="myXmlItemReader" processor="myProcessor
Writer="myDBWriter" commit-interval="100" skip-limit="10000">
<batch:skippable-exception-classes>
<batch:include class="java.lang.Exception"/>
</batch:skippable-exception-classes>
</batch:chunk>
<batch:listeners>
<batch:listener ref="myFileNameListener" />
</batch:listeners>
</batch:tasklet>
<batch:end on="FAILED"/>
</batch:step>
阅读器正在使用 StaxEventItemReader。
我已向侦听器添加了 onProcessError()、onReadError()、onSkipInProcess()、onSkipInRead()、onSkipInWrite() 和 onWriteError() 方法。我可以看到代码命中 OnReadError() 方法(取决于 XML 错误,onSkipInRead() 方法)。
我可以在 OnReadError() 中做些什么来强制作业跳过文件的其余部分并移动到下一个文件吗?