Spring批处理作业链执行不等待以前的作业在Jboss中完成
问题描述:
我已经按顺序链接了一组Spring作业。Spring批处理作业链执行不等待以前的作业在Jboss中完成
<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中的作业。
我在这里错过了什么,或者我在这里做错了什么?请建议。
答
解决了这个问题。 我已经提供了如下的job-launcher =“jobLauncher”属性。因此独立的线程被启动并且作业被并行触发。
<batch:job ref="externalJob1" job-launcher="jobLauncher">
现在我已经从所有作业中删除了joblauncher引用,并且按照设计触发作业。