1
我已经扩展了FlowJob类和我设置的流程如下:。混合串行和并行步骤的处理
final Flow subflow1 = new FlowBuilder<Flow>("subflow1")
.start(new StepBuilder("SubFlow1-step")
.chunk(1000)
.reader(reader)
.writer(writer)
.repository(jobRepository)
.transactionManager(txManager).build())
.end();
final Flow subflow2 = new FlowBuilder<Flow>("subflow2")
.start(new StepBuilder("SubFlow2-step")
.chunk(1000)
.reader(reader)
.writer(writer)
.taskExecutor(new SimpleAsyncTaskExecutor())
.repository(jobRepository)
.transactionManager(txManager).build())
.end();
setFlow(new FlowBuilder<Flow>("Flow")
.start(new StepBuilder("Flow-step1")
.chunk(10000)
.reader(reader)
.writer(writer)
.repository(jobRepository)
.transactionManager(txManager).build())
.next(new StepBuilder("Flow-step2")
.tasklet(processor)
.repository(jobRepository)
.transactionManager(txManager).build())
.split(new SimpleAsyncTaskExecutor())
.add(subflow1, subflow2)
.end());
正如你所看到的,我想要做的是:
- 执行步骤1
- 执行步骤2
- 同时执行subflow1和subflow2。 subflow1步骤将按顺序执行。 subflow2步骤将并行执行(分派到可用线程的块)。
当我运行我的作业时,步骤1和2被正确执行,然后作业终止。
有什么想法?
编辑:关于SO Spring-batch flow/split after a step的相关问题。
请参阅http://stackoverflow.com/questions/21782008/how-to-terminate-step-弹簧内批量拆分流程与决策者 –