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引用,并且按照设计触发作业。