繁体   English   中英

混合顺序和并行步骤处理

[英]Mixing sequential and parallel step processing

我已经扩展了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. 执行步骤1
  2. 执行第2步
  3. 同时执行subflow1和subflow2。 subflow1步骤将按顺序执行。 subflow2步骤将并行执行(调度到可用线程的块)。

当我运行我的工作时,步骤1和2正确执行,然后作业终止。

任何想法?

编辑:关于SO 弹簧批次流/分步后的相关问题。

我相信有一个关于此的错误记录。 目前,解决方法是使用拆分创建流并将流添加到作业,如下所示:

@Bean
public Job splitJob(@Qualifier("foo") Flow foo, @Qualifier("foo") Flow bar) {
    FlowBuilder<Flow> flowBuilder = new FlowBuilder<>("split");

    Flow flow = flowBuilder.split(new SimpleAsyncTaskExecutor())
            .add(foo, bar)
            .end();

    return jobBuilderFactory.get("splitJob")
            .start(myStep1())
            .next(myStep2())
            .on("COMPLETED").to(flow)
            .end()
            .build();
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM