У меня есть многопоточный шаг, созданный с максимальным пределом потока 10;
private static final int THREAD_NUMBER = 10;
@Bean
public TaskExecutor taskExecutor(){
SimpleAsyncTaskExecutor simpleAsyncTaskExecutor = new SimpleAsyncTaskExecutor("batch-thread");
simpleAsyncTaskExecutor.setConcurrencyLimit(THREAD_NUMBER);
return simpleAsyncTaskExecutor;
}
@Bean
protected Tasklet readHeader() {
EkuampVorsatzReader ekuampVorsatzReader = new EkuampVorsatzReader();
return ekuampVorsatzReader;
}
@Bean
public Step stepGetPriceFileHeader(){
return stepBuilderFactory.get("batch-job_price_file-step-get-pricefile-header").tasklet(readHeader()).build();
}
@Bean
public Step stepGetPriceFileData() {
return stepBuilderFactory.get("batch-job_price_file-step-get-pricefile-data")
.<ImportLogEntity, ImportLogEntity>chunk(50)
.reader(priceFileReader).listener(priceFileReaderListener)
.writer(priceFileWriter)
.listener(priceFileStepListener)
.taskExecutor(taskExecutor())
.throttleLimit(THREAD_NUMBER)
.build();
}
@Bean
public Job batchJobPriceFile() {
Job job = jobBuilderFactory.get("batch-job_price_file")
.start(stepGetPriceFileHeader())
.next(stepGetPriceFileData())
.listener(jobExecutionListener)
.build();
return job;
}
После обработки файла с 2 миллионами записей я вижу в файле журнала, что создано слишком много потоков, даже если я установил ограничениедо 10 потоков.Пример: INFO [batch-thread35348] Подскажите, пожалуйста, почему?Спасибо.
2019-07-02T17: 02: 29,896 8129857 ИНФОРМАЦИЯ [batch-thread35348] com.db.wmdl.pricefile.job.batch.listener.PriceFileReaderListener ([]) - PriceFileReaderListener -beforeRead 2019-07-02T17: 02: 30,147 8130108 ИНФОРМАЦИЯ [batch-thread35341] com.db.wmdl.pricefile.job.batch.listener.PriceFileWriterListener ([]) - PriceFileWriterListener - afterWrite;Размер списка: 50 2019-07-02T17: 02: 30,191 8130152 ИНФОРМАЦИЯ [batch-thread35343] com.db.wmdl.pricefile.job.batch.listener.PriceFileWriterListener ([]) - PriceFileWriterListener - afterWrite;Размер списка: 50 2019-07-02T17: 02: 30,219 8130180 ИНФОРМАЦИЯ [batch-thread35342] com.db.wmdl.pricefile.job.batch.listener.PriceFileWriterListener ([]) - PriceFileWriterListener - afterWrite;Размер списка: 50 2019-07-02T17: 02: 30,340 8130301 ИНФОРМАЦИЯ [batch-thread35344] com.db.wmdl.pricefile.job.batch.listener.PriceFileWriterListener ([]) - PriceFileWriterListener - afterWrite;Размер списка: 50 2019-07-02T17: 02: 30,504 8130465 ИНФОРМАЦИЯ [batch-thread35345] com.db.wmdl.pricefile.job.batch.listener.PriceFileWriterListener ([]) - PriceFileWriterListener - afterWrite;Размер списка: 50 2019-07-02T17: 02: 30,513 8130474 ИНФОРМАЦИЯ [batch-thread35349] com.db.wmdl.pricefile.job.batch.listener.PriceFileReaderListener ([]) - PriceFileReaderListener - перед прочтением 2019-07-02T17: 02: 30,513 8130474 ИНФОРМАЦИЯ [batch-thread35350] com.db.wmdl.pricefile.job.batch.listener.PriceFileReaderListener ([]) - PriceFileReaderListener - beforeRead 2019-07-02T17: 02: 30,513 8130474 ИНФОРМАЦИЯ [пакетная нить3535]db.wmdl.pricefile.job.batch.listener.PriceFileReaderListener ([]) - PriceFileReaderListener - beforeRead 2019-07-02T17: 02: 30,513 8130474 ИНФОРМАЦИЯ [batch-thread35352] com.db.wmdl.pricefile.jer.batch.l.PriceFileReaderListener ([]) - PriceFileReaderListener - beforeRead 2019-07-02T17: 02: 30,513 8130474 ИНФОРМАЦИЯ [batch-thread35354] com.db.wmdl.pricefile.job.batch.listener.PriceFileReaderListener (до [201] - цена 201FF)-07-02T17: 02: 30,513 8130474 ИНФОРМАЦИЯ [batch-thread35353] com.db.wmdl.pricefile.job.batch.listener.PriceFileReaderListener ([]) - PriceFileReaderListener - beforeRead 2019-07-02T17: 02: 30,513 8130474 ИНФОРМАЦИЯ [batch-thread35355] com.db.wmdl.pricefile.job.batch.listener.PriceFileReaderListener ([]) - PriceFileReaderListener - beforeRead 2019-07-02T17: 02: 30,586 81547ИНФОРМАЦИЯ [QuartzScheduler_Worker-1] com.db.wmdl.pricefile.job.batch.listener.PriceFileJobListener ([]) - SpringBatchJob [входящий-id: 56435] [spring-batch-job-execute-id: 21] импорт выполнен