我想通过异步处理来提高我的 Spring Batch 性能
我注意到类
AsyncItemProcessor
有一个方法setTaskExecutor
:
public AsyncItemProcessor asyncDataProcessor() throws Exception {
AsyncItemProcessor<List<Data>, List<Data>> processor = new AsyncItemProcessor<>();
processor.setDelegate(dataProcessor());
processor.setTaskExecutor(taskExecutor());
return processor;
}
但是StepBuilder类也有这个
taskExecutor
方法:
@Bean
public Step dataStep(JobRepository jobRepository,
PlatformTransactionManager transactionManager, DataService dataService) throws Exception {
return new StepBuilder("dataStep", jobRepository)
.<List<Data>, List<Data>>chunk(1, transactionManager)
.reader(dataItemReader(dataService))
.processor(asyncDataProcessor())
.writer(asyncDataWriter(dataService))
.taskExecutor(taskExecutor())
.build();
}
我应该在两个 bean 定义中使用这个方法吗? AsyncItemProcessor 中的 setTaskExecutor 和 StepBuilder 中的 taskExecutor 有什么区别?