我想在几个线程中运行步骤,但我也想让每个线程使用不同的处理器,例如,我们可以让读者从不同的源读取。
这是我的xml配置:
<batch:job id="job">
<batch:step id="readFromQueuesMaster">
<batch:partition step="readFromQueuesSlave" partitioner="queuePartitioner">
<batch:handler grid-size="5" task-executor="taskExecutor"/>
</batch:partition>
</batch:step>
</batch:job>
<batch:step id="readFromQueuesSlave">
<batch:tasklet>
<batch:chunk reader="queueReader"
processor="#{stepExecutionContext[itemProcessor]}"
writer="flatFileItemWriter"
commit-interval="10"/>
</batch:tasklet>
</batch:step>
这是我的分区:
@Override
public Map<String, ExecutionContext> partition(int gridSize) {
Map<String, ExecutionContext> result = new HashMap<>();
for (int i = 1; i <= gridSize; i++) {
ExecutionContext value = new ExecutionContext();
value.put("itemProcessor", someMethodReturningProcessor(i));
result.put("partition" + i, value);
}
return result;
}
显然,使用processor =&#34;#{stepExecutionContext [itemProcessor]}&#34;没有用。