Como ignorar linhas em branco no CSV usando FlatFileItemReader e pedaços

Estou processando arquivos CSV usando o FlatFileItemReader.

Às vezes, estou recebendo linhas em branco no arquivo de entrada.

Quando isso aconteceu, todo o passo para. Quero pular essas linhas e continuar normal.

Eu tentei adicionarmanipulador de exceção para a etapa, a fim de capturar a execução em vez de ter a etapa inteira curvada:

@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();
    }

Como estou processando compedaços quando uma linha em branco chega e a exceção é detectada, o que acontece é que todo o bloco épulado(o pedaço pode conter linhas válidas no arquivo CSV e elas são ignoradas)

Alguma idéia de como fazer isso corretamente ao processar arquivos em pedaços?

Obrigado, ray.

Depois de editar meu código. ainda não está pulando:

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();
    }

questionAnswers(1)

yourAnswerToTheQuestion