我的批处理作业不处理所有读取记录 .
完成工作后,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 回答
问题是我有一个Exception Listener,当一些记录抛出一个Exception时,会跳过chunk中的所有记录 .