Spring批量跳过限制超出但不释放资源

时间:2014-07-11 08:58:37

标签: spring spring-batch

我正在使用分区来读取spring批处理中的多个csv文件。

我已将skip-limit = 2和csv包含多于2个有异常的记录。还添加了                                       因此,如果发生FlatFileParseException异常,则代码将跳过记录,直到skip-limit< = 2。现在记录3号alos抛出FlatFileParseException然后超出skip-limit并抛出SkiplimitException,这很好。

但我正在做一些操作,如果超过了skip-limit,然后尝试将同一个文件移动到另一个文件夹,但它没有发生并抛出IOException。我已经尝试并在其上完成了一些R& D,发现csv文件资源仍处于打开状态。

那我怎么能处理这种情况呢?请尽可能帮助我...... :(

1 个答案:

答案 0 :(得分:0)

发生此错误是因为 - 可能 - 资源在步骤的关闭阶段(当它终止时,用简单的单词)和“锁定”之前都被释放。
如果要删除/移动csv,则必须在移动/复制失败资源的第二步中执行此操作;在上一步中,只需设置标记即可记住应清除哪些资源。

一个简单的测试(但我不相信这将是一个成功的尝试)你可以打电话给你FlatFileItemReader.close(),但我担心这会干扰正常的SB资源生命周期。