Spring Batch:ItemProcessor不处理所有记录

时间:2018-05-14 13:52:20

标签: java spring multithreading spring-boot spring-batch

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

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

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

ItemReader:带有saveState = false的JpaPagingItemReader

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版本: 2.0.1

1 个答案:

答案 0 :(得分:0)

问题是我有一个异常侦听器,当某些记录引发异常时,将跳过该块中的所有记录。