如何在spring批处理中按顺序对连续步骤进行分区

问题描述 投票:0回答:1

我知道spring批处理框架可以对主步骤进行分区,以便以并行方式运行多个从属步骤。

我的要求是按顺序对一系列步骤进行分区(如流程)来操作多个表,而不只是一步。我只能想到两个替代方案。

  1. 只创建一个tasklet来组装所有逻辑以更新串行表。
  2. 为流中的每个步骤创建分区步骤。

理想情况下,我希望spring批量支持这个功能。请详细说明实现目标的最佳方法。

非常感谢一个例子。

更新:我做了一些谷歌搜索,发现我可以使用FlowStep对流进行分区,如下所示。这是正确的做法吗?

public Step partiotionStep() {
    return stepBuilderFactory.get("partiotionStep")
            .partitioner("slaveStep", partitioner())
            .step(new FlowStep(flow()))
            .taskExecutor(taskExecutor())
            .build();

 public Flow flow() {
    return new FlowBuilder<Flow>("flow")
            .start(step1())
            .next(step2())
            .next(step3())
            .build();
spring-batch partition
1个回答
0
投票

您可以按顺序定义具有多个步骤的作业,每个步骤都是一个分区步骤:

public Job job() {
    return jobBuilderFactory("job")
            .start(step1()) // step1 is a partitioned step
            .next(step2()) // step2 is also a partitioned step
            .build();
}

你可以在我的答案中找到一个类似的问题:Is it possible to combine partition and parallel steps in spring batch?

希望这可以帮助。

© www.soinside.com 2019 - 2024. All rights reserved.