4

我正在使用 Spring Batch (2.2.6.RELEASE)FlowBuilder.SplitBuilder在 Java Config 类中声明一个流,该类并行执行 3 个子流:

@Bean
public SimpleFlow mainFlow() {
    return new FlowBuilder<SimpleFlow>("Main Flow")
            .start(flow1())
            .split(new SimpleAsyncTaskExecutor())
            .add(flow2(), flow3())
            .build();
}

此语法来自spring-batch FlowBuilder.SplitBuilderjavadoc

但是,flow1永远不会被执行;只有flow2flow3被执行。

对我来说它看起来像一个错误......你怎么看?

可以ParallelFlowsJobConfigTest在此 github 存储库的类中找到 junit 测试:https ://github.com/galak75/spring-batch-labs

4

2 回答 2

2

这对我有用:

@Bean
public SimpleFlow mainFlow() {
    SimpleFlow splitFlow = new FlowBuilder<SimpleFlow>("Split Flow")
        .split(new SimpleAsyncTaskExecutor())
        .add(flow2(), flow3())
        .build();
    return new FlowBuilder<SimpleFlow>("Main Flow")
        .start(flow1())
        .next(splitFlow)
        .end();
}

重要的细节是“next(...)”以及slit 应该在它自己的子流中的事实。

于 2014-07-28T09:12:10.497 回答
1

BATCH-2346解决,在 Spring Batch 3.0.4 版本中提供。

于 2015-09-10T18:18:20.673 回答