我的批处理作业不处理所有读取记录。
完成工作后,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
答案 0 :(得分:0)
问题是我有一个异常侦听器,当某些记录引发异常时,将跳过该块中的所有记录。