一步后弹簧批流/分流

我正在构建一个包含以下过程的弹簧批处理解决方案:

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

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

以下作业无法编译。 Spring给了我一个错误:’无法解决step2′

     

那么,如何将作业配置为首先运行单个步骤,而不是并行运行多个步骤,然后运行最后一个步骤?

我偶然发现了这个问题,询问分裂是如何工作的,也许这个答案到了一点(一年),但是我在这里……

那里的“分裂”问题本身并不是一个步骤,而是你正在命名(和引用)它:

       

正确的语法是:

              

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

您应该查看有关扩展和并行进程的文档, 分区步骤似乎是您的要求的良好候选。

并行步骤将指示每个子列表的不同步骤,我认为这不是您想要的。
单个multithreading步骤似乎更合适。
如文档所述,首先定义一个TaskExecutor bean,它将在一个单独的线程中处理每个 。 由于TaskExecutors使用起来相当简单,您也可以自己调用TaskExecutor。 在这种情况下,您的步骤可以是multithreading的,而Spring Batch无需了解它。

当然,你可以在工作中分开! 以下是Spring Batch In Action(2012)中的示例。