【发布时间】:2014-09-28 00:30:04
【问题描述】:
我有一个工作流程,我想按以下方式运行它:
Job1 -> Job2 -> Job3
-> Job4 -> Job5
作业流程将从 Job1 开始。
Job1 成功完成后,Job1 将同时启动 Job2 和 Job4。
Job2 和 Job4 将并行运行。
Job2 成功完成后,Job2 会启动 Job3。
Job4 成功完成后,Job4 将启动 Job5。
以下是job1.xml和Job1的job launcher类的sn-p代码:
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>
UIJobLauncher.java
Job jobOne = jobLocator.getJob(jobTwo);
simpleJobLauncher.run(jobOne, builder.toJobParameters());
Job jobTwo = jobLocator.getJob(jobFour);
simpleJobLauncher.run(jobTwo, builder.toJobParameters());
问题
但是,当我启动 Job1 时,Job1 启动了 Job2,而 Job2 继续到 Job3。
Job3 完成后,Job1 启动 Job4,Job4 继续 Job5。
“Job2, Job3” 对和“Job4, Job5” 对没有并行运行。 虽然 Job1 启动了 Job4,但作业流程变成了如下:
Job1 -> Job2 -> Job3 -> Job4 -> Job5
那么,spring 批处理作业如何并行运行呢? 有没有办法从 Spring Batch Admin UI 和命令行并行运行 Spring Batch 作业?
【问题讨论】:
标签: parallel-processing spring-batch