gpt4 book ai didi

java - 步骤后的 Spring 批处理流/拆分

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:30:21 25 4
gpt4 key购买 nike

我正在构建一个包含以下过程的 spring-batch 解决方案:

第 1 步:将一个列表拆分为多个列表 第 2 步:处理每个子列表 第 3 步:合并子列表

生成的子列表可以并行处理,根据 spring-batch 文档,这是支持的。遗憾的是,我只能找到以并行步骤开始的 spring-batch 示例作业,而不是按顺序开始的示例。

以下作业将不会编译。 Spring 给我一个错误:'无法解析第 2 步'

<batch:job id="webServiceJob2">
<batch:step id="step1" next="step2"></batch:step>
<batch:split id="step2" next="step3"></batch:split>
<batch:step id="step3"></batch:step>
</batch:job>

那么我如何配置作业先运行一个步骤,然后并行运行多个步骤,然后再运行最后一个步骤?

最佳答案

我偶然发现了这个问题,询问拆分是如何工作的,也许这个答案晚了一点(一年),但我走了......

“拆分”问题本身并不是一个步骤,而是您按原样命名(和引用)它:

<batch:job id="webServiceJob2">
<batch:step id="step1" next="step2"></batch:step>
<batch:split id="step2" next="step3"></batch:split> <!-- This is not a step -->
<batch:step id="step3"></batch:step>
</batch:job>

正确的语法是:

<batch:job id="webServiceJob2">
<batch:step id="step1" next="step2"></batch:step>
<batch:split id="split_step2" next="step3">
<flow>
<step id="step2_A_1" ... next="step2_A_2"/>
<step id="step2_A_2" ... />
</flow>
<flow>
<step id="step2_B_1" ... />
</flow>
</batch:split>
<batch:step id="step3"></batch:step>
</batch:job>

但这不是你想要实现的,因为通过 split 声明你必须在编译时设置将要执行的并行步骤的确切数量,而 split 的目的是使用不同的每个流程中的步骤,而不是多次调用同一个流程。

您应该查看有关 Scaling and Parallel processes 的文档,分区步骤似乎很适合您的要求。

关于java - 步骤后的 Spring 批处理流/拆分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20269091/

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