Spring Batch:ItemProcessor不处理所有记录

我的批处理作业不处理所有读取记录 .

完成工作后,Spring Batch记录读取198282记录,但在处理器中我在开始处理之前有一个日志并且只记录196503,但有时,处理器处理全部 .

我在多线程中运行工作,油门限制= 20,但有时我有这个问题,而不是全部处理 .

ItemReader: JpaPagingItemReader,saveState = false

ItemProcessor:

class MyProcessor implements ItemProcessor<Item, Item> {

    @Override
    public Item process(final Item item) {
        log.info("action=process..");
        ....
    }
}

可能会发生什么? Spring批处理没有发送所有记录进行处理,或者我在使用多线程时做错了什么?

工作

@Bean
public Job myJob (Step myStep) {
    return jobBuilderFactory.get("myJob")
            .start(myStep)
            .build();
}

@Bean
public Step consolidateTaxaRebateJobStep (
        JpaPagingItemReader<Item> reader,
        ItemProcessor<Item, Item> processor,
        ItemWriter<Item> writer,
        TaskExecutor taskExecutor) {
    return stepBuilderFactory.get("myStep")
            .<Item, Item>chunk(200)
            .reader(reader)
            .processor(processor)
            .writer(writer)
            .taskExecutor(taskExecutor)
            .throttleLimit(20)
            .build();
}

Spring Boot Version: 2.0.1

回答(1)

2 years ago

问题是我有一个Exception Listener,当一些记录抛出一个Exception时,会跳过chunk中的所有记录 .