Моя проблема заключается в том, что я должен передать несколько номеров файлов для чтения пружинных пакетов, а программа чтения запускается в parellel.Если мы используем grid-size = 100, тогда будет 100 потоков, что не логично. Как решить эту проблему, т. е. обрабатывать много файлов с ограниченным числом потоков.
@Bean
public Step orderStep1() throws IOException {
return stepBuilderFactory.get("orderStep1")
.partitioner("slaveStep", partitioner())
.step(slaveStep())
.gridSize(100)
.taskExecutor(taskExecutor())
.build();
}
Task executor will be
@Bean
public TaskExecutor taskExecutor() {
SimpleAsyncTaskExecutor taskExecutor = new SimpleAsyncTaskExecutor();
return taskExecutor;
}
partitoner will be
public Map<String, ExecutionContext> partition(int gridSize) {
Map<String, ExecutionContext> partitionData = new HashMap<String, ExecutionContext>();
for (int i = 0; i < gridSize; i++) {
ExecutionContext executionContext = new ExecutionContext();
executionContext.putString("file", fileList.get(i)); //passing filelist
executionContext.putString("name", "Thread" + i);
partitionData.put("partition: " + i, executionContext);
}
return partitionData;
}
и динамически передавать файлы, используя stepExecutionContext