Spring Batch,Chunk Size和Skip Listener在一起

时间:2017-03-03 16:19:06

标签: spring spring-batch

我有一个弹簧批量应用程序,它运行良好。它只是从文本文件中读取并写入oracle表。它执行卡盘装载。目前我已经配置了2000的chuck大小。问题是,当我为这个作业实现跳过监听器时,spring忽略了我给出的块大小,并且它一次只插入一条记录到数据库中。 Skip listerner只是将无效记录写入文本文件。这是春季批次的工作原理吗?

1 个答案:

答案 0 :(得分:0)

在一个块中,ItemWriter将始终首先尝试写入块中的整个项目列表。但是,如果抛出可跳过的异常,框架需要确定导致错误的项目。

要执行此操作,将回滚事务,然后逐个重试项目。这允许将可能导致问题的任何项目传递给您的跳过侦听器。不幸的是,它还消除了块的批处理。

一般情况下,在处理器中进行前期验证是首选(并且性能会更好),因此您可以过滤"过滤"项目输出而不是抛出异常并单独重试项目。