当前位置: 首页 > 知识库问答 >
问题:

混合顺序和并行分步处理

杜正奇
2023-03-14

我扩展了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

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

知道吗?

编辑:SO Spring批处理流程/步骤后拆分的相关问题。

共有1个答案

李谦
2023-03-14

我相信这里面有个漏洞。目前的解决方法是使用拆分创建流程,并将流程添加到作业中,如下所示:

@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();
}
 类似资料:
  • 问题内容: 尝试按我想要的顺序打印页面时出现问题。在我的代码中,我输入了以下内容: 但是,当我看到页面上的显示时,它显示: JSON格式的字符串: 我需要按用户ID,数量和成功的顺序排列。已经尝试在代码中重新排序,但无济于事。我也尝试过....需要一些帮助,谢谢!! 问题答案: 你不能也不应该依赖JSON对象中元素的顺序。 来自http://www.json.org/的JSON规范 对象是名称/值

  • 问题内容: 我正在使用Node.js运行服务器,并且需要从正在运行的另一台服务器()请求数据。我需要向数据服务器发出许多请求(〜200)并收集数据(响应大小从〜20Kb到〜20Mb不等)。每个请求都是独立的,我想将响应保存为以下形式的一个巨大数组: 请注意,项目的顺序并不重要,理想情况下,它们应该以数据可用的顺序填充数组。 现在,当运行该程序时,它将显示: 现在,由于文件的大小如此可变,我期望它可

  • 我有一份由不同的工作组成的工作。我希望在其他作业步骤完成后,一起触发一批这些作业步骤(JobStep1、JobStep2、JobStep3)(在不同的线程中与AsyncTaskExecutor一起运行)和最后一个作业步骤(JobStep4)。因此,我为每个JobStep创建了不同的流,并用AsyncTaskExecutor将它们放在一个流中。我还为最后一个JobStep做了一个单独的流。 完成工作

  • 我正在实现一个分页器(在Java),它应该允许并行访问。 我有以下测试用例(测试在Groovy中,带有Spock): 此testcase失败,出现以下错误: 拆分器具有 当我不使用并行时,代码可以工作。所以我不理解: 如果设置了,流框架是否应该保证顺序,并且应该在使用并行生成的块时对结果进行排序?如果是,为什么不在我的情况下排序? 还是我的实现中有错误,必须按照给定的顺序拆分?(当前我在打开页面的

  • 我正在尝试设置log4j2以使用异步记录器将所有消息记录到滚动文件中。 是否有一种方法可以创建另一个记录程序来捕获所有事件?还有别的想法吗? 下面是我的log4j2.xml:

  • 问题内容: 我必须对具有多个属性的列表进行排序。我可以轻松地按升序对所有属性执行此操作 但是问题是,我必须使用混合配置来进行升序/降序…我必须“模仿”一点SQL ,在SQL中您可以执行类似的操作。有没有一种方法可以在Python中轻松实现,而无需实现自定义比较功能? 问题答案: 如果您的属性是数字,则具有此属性。 如果您的属性包括字符串或其他更复杂的对象,则可以选择。 该方法很稳定:您可以进行多次