我已按顺序链接了一组Spring批处理作业。
<batch:job id="rootJob">
<batch:step id="rootJob.step1">
<batch:job ref="externalJob1">
<batch:next on="COMPLETE" to="rootJob.step2">
</batch:step>
<batch:split id="rootJob.step2">
<batch:flow>
<batch:step id="splitStep1">
<batch:job ref="externalJob2">
</batch:step>
</batch:flow>
<batch:flow>
<batch:step id="splitStep2">
<batch:job ref="externalJob3">
</batch:step>
</batch:flow>
<batch:next on="COMPLETE" to="rootJob.step3">
</batch:split>
<batch:step id="rootJob.step3">
<batch:job ref="externalJob4">
</batch:step>
</batch:job>
对工作流程执行的期望。
1. On Completion of rootJob.step1 execute rootJob.step2.
2. Execute splitJob1 and splitJob2 in parallel.
3. On Completion of rootJob.step2 execute rootJob.step3
但是在Jboss中部署和触发时。流程未按预期执行。这些步骤将在单次拉伸中触发。执行不是等待上一步完成并立即启动。
我怀疑是TaskExecutor。在独立中,我们不指定任何任务执行程序(默认为 SyncTaskExecutor ),并且作业流程正常。但是当部署在Jboss中时,我们使用 SimpleAsyncTaskExecutor ,因为使用SyncTaskExecutor甚至不会在Jboss中触发作业。
我在这里缺少什么,或者我在这里做错了什么。请建议。
答案 0 :(得分:0)
解决了这个问题。 我提供了工作启动器=&#34; jobLauncher&#34;物业如下。因此启动了单独的线程,并且作业并行触发。
$status
现在我已从所有作业中删除了joblauncher引用,并且作业按设计触发。