Как пропустить пустые строки в CSV, используя FlatFileItemReader и чанки

Я обрабатываю файлы CSV, используя FlatFileItemReader.

Иногда я получаю пустые строки во входном файле.

Когда это произошло, весь шаг останавливается. Я хочу пропустить эти строки и продолжить нормально.

Я пытался добавитьобработчик исключений к шагу, чтобы поймать выполнение вместо того, чтобы весь шаг был остановлен:

@Bean
    public Step processSnidUploadedFileStep() {
        return stepBuilderFactory.get("processSnidFileStep")
                .<MyDTO, MyDTO>chunk(numOfProcessingChunksPerFile) 
                .reader(snidFileReader(OVERRIDDEN_BY_EXPRESSION))
                .processor(manualUploadAsyncItemProcessor())
                .writer(manualUploadAsyncItemWriter())
                .listener(logProcessListener)
                .throttleLimit(20)
                .taskExecutor(infrastructureConfigurationConfig.taskJobExecutor())
                .exceptionHandler((context, throwable) -> logger.error("Skipping record on file. cause="+ ((FlatFileParseException)throwable).getCause())),
                .build();
    }

Так как я обрабатываю сломти когда появляется пустая строка и ловится исключение, происходит то, что весь кусокпропускаются(блок может содержать допустимые строки в файле CSV, и они также пропускаются)

Любая идея, как это сделать правильно при обработке файла кусками?

Спасибо, Рэй.

После редактирования моего кода. еще не пропускаю

public Step processSnidUploadedFileStep() {
        SimpleStepBuilder<MyDTO, MyDTO> builder = new SimpleStepBuilder<MyDTO, MyDTO>(stepBuilderFactory.get("processSnidFileStep"));
       return builder
                .<PushItemDTO, PushItemDTO>chunk(numOfProcessingChunksPerFile)
                .faultTolerant().skip(FlatFileParseException.class)
                .reader(snidFileReader(OVERRIDDEN_BY_EXPRESSION))
                .processor(manualUploadAsyncItemProcessor())
                .writer(manualUploadAsyncItemWriter())
                .listener(logProcessListener)
                .throttleLimit(20)
                .taskExecutor(infrastructureConfigurationConfig.taskJobExecutor())
                .build();
    }

Ответы на вопрос(1)

Ваш ответ на вопрос