首页 文章

Spring Batch,Chunk Size和Skip Listener在一起

提问于
浏览
0

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

1 回答

  • 0

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

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

    通常,在处理器中进行前期验证更好(并且性能更好),因此您可以“过滤”项目,而不是抛出异常并单独重试项目 .

相关问题