Parallel processing 如何并行运行spring批处理作业

Parallel processing 如何并行运行spring批处理作业,parallel-processing,spring-batch,Parallel Processing,Spring Batch,我有一个作业流,我希望按以下方式运行它: Job1 -> Job2 -> Job3 -> Job4 -> Job5 Job1 -> Job2 -> Job3 -> Job4 -> Job5 作业流将从作业1开始。 Job1成功完成后,Job1将同时启动Job2和Job4。 作业2和作业4将并行运行。 Job2成功完成后,Job2将启动Job3。 Job4成功完成后,Job4将启动Job5 以下是job1.xml和job1的job

我有一个作业流,我希望按以下方式运行它:

Job1 -> Job2 -> Job3  
     -> Job4 -> Job5
Job1 -> Job2 -> Job3 -> Job4 -> Job5
作业流将从作业1开始。 Job1成功完成后,Job1将同时启动Job2和Job4。
作业2和作业4将并行运行。
Job2成功完成后,Job2将启动Job3。
Job4成功完成后,Job4将启动Job5

以下是job1.xml和job1的job launcher类的代码段:

job1.xml

<bean id="uiJobListener"
    class="com.joblaunch.UIJobListener">
    <property name="vmInfoImportUIBatchLauncher" ref="vmInfoImportUIBatchLauncher" />
    <property name="jobRepository" ref="jobRepository" />
</bean>

<bean id="uiBatchLauncher"
    class="com.joblaunch.UIBatchLauncher">
    <property name="simpleJobLauncher" ref="simpleJobLauncher" />
    <property name="jobLocator" ref="jobRegistry" />
    <property name="jobTwo" value="Job2" />
    <property name="jobFour" value="Job4" />
</bean>

<batch:job id="Job1" restartable="true">
    <batch:step id="stp01">
        <batch:tasklet ref="stp01Operator" />
        <batch:next on="COMPLETED" to="stp02" />
    </batch:step>

    <batch:step id="stp02">
        <batch:tasklet ref="stp02Result" />
    </batch:step>

    <batch:listeners>
        <batch:listener ref="uiJobListener" />
    </batch:listeners>
</batch:job>
问题

但是,当我开始Job1时,Job1启动了Job2,而Job2继续运行到了Job3。
Job3完成后,Job1启动了Job4,Job4继续运行到Job5

“Job2,Job3”对和“Job4,Job5”对没有并行运行。 虽然Job1启动了Job4,但作业流如下所示:

Job1 -> Job2 -> Job3  
     -> Job4 -> Job5
Job1 -> Job2 -> Job3 -> Job4 -> Job5
那么,spring批处理作业如何并行运行呢?
有没有一种方法可以从spring批处理管理UI和命令行并行运行spring批处理作业?

作业不能像您要求的那样自然管理。
您必须创建一个新的超级作业,并根据需要使用配置重定向作业。
当然,split适用于步骤,而不适用于作业,但是SB可以使用
将作业包装成步骤
遵循官方文件和有关拆分网络的示例,您应该能够毫无问题地解决您的问题

工作无法按照您的要求自然管理。
您必须创建一个新的超级作业,并根据需要使用配置重定向作业。
当然,split适用于步骤,而不适用于作业,但是SB可以使用
将作业包装成步骤
遵循官方文件和有关拆分网络的示例,您应该能够毫无问题地解决您的问题

如果作业被包装到一个步骤中,则该作业无法自行运行。是这样吗??如果是这样,我认为“JobStep”可能不好,因为我还希望不仅作为作业流运行,而且每个作业都单独运行。还有其他方法吗???作业可以像往常一样独立启动。在您的案例中,当作业是复杂流的一部分时,作业步骤是重用作业定义的方法。除非您决定手动同步作业流,否则在没有JobStep的情况下无法复制您的请求。如果作业被包装到步骤中,则该作业无法自行运行。是这样吗??如果是这样,我认为“JobStep”可能不好,因为我还希望不仅作为作业流运行,而且每个作业都单独运行。还有其他方法吗???作业可以像往常一样独立启动。在您的案例中,当作业是复杂流的一部分时,作业步骤是重用作业定义的方法。除非您决定手动同步作业流,否则在没有JobStep的情况下无法复制您的请求。