Не вдаваясь в детали вашего пользовательского устройства чтения / обработки / записи, я думаю, что вы ищете многопоточный шаг .
Как также описано вышесвязанная документация, чтобы сделать ваш шаг многопоточным (то есть чтение / обработка / запись каждого чанка в отдельном потоке), вам сначала нужно зарегистрировать SimpleAsyncTaskExecutor
:
@Bean
public TaskExecutor taskExecutor(){
return new SimpleAsyncTaskExecutor("myAsyncTaskExecutor");
}
, а затем зарегистрировать этого исполнителя задачв строителе вашего шага:
@Bean
public Step step1() {
return stepBuilderFactory.get("step1")
.<VideosDTO, VideosDTO>chunk(3)
.reader(databaseVideoItemReader(null))
.processor(new Processor())
.writer(new Writer(videoDao))
//making the Step multi-threaded
.taskExecutor(taskExecutor())
.build();
}