gpt4 book ai didi

java - 混合顺序和并行步骤处理

转载 作者:行者123 更新时间:2023-11-29 05:00:13 25 4
gpt4 key购买 nike

我扩展了 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. 执行第2步
  3. 同时执行 subflow1 和 subflow2。 subflow1 步骤将按顺序执行。 subflow2 步骤将并行执行(分派(dispatch)给可用线程的 block )。

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

有什么想法吗?

编辑: 关于 SO Spring-batch flow / split after a step 的相关问题.

最佳答案

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

@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();
}

关于java - 混合顺序和并行步骤处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32357375/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com