通过在步骤bean声明中添加任务执行程序,可以非常容易地使Step的Chunks同时运行,如下所示:
@Bean
public TaskExecutor taskExecutor(){
SimpleAsyncTaskExecutor taskExecutor = new SimpleAsyncTaskExecutor("taskExecutor");
taskExecutor.setConcurrencyLimit(5);
return taskExecutor;
}
@Bean
public Step logGroupedDeductionStep(){
return stepBuilderFactory.get("logGroupedDeductionStep")
.<DeductionType, GroupedDeductionTransactionDTO>chunk(50)
.reader(groupedDeductionItemReader)
.processor(groupedDeductionItemProcessor)
.writer(groupedDeductionItemWriter)
.taskExecutor(taskExecutor())
.build();
}
在我的读者,处理器和编写器中,我使用Spring Data JPA
来获取和写入数据到持久层(MySQL)。
我的问题是,如果我这样做,这是否意味着不同的线程会在某个时刻读取相同的实体,因此会写出重复的记录?
如何使处理(和写入)在不同的线程中发生,但读者成为一个(如数据源)?
请遮光。