【问题标题】:Spring Batch Job Chaining execution not waiting for previous job to complete in JbossSpring Batch Job Chaining执行不等待上一个作业在Jboss中完成
【发布时间】:2017-07-19 15:29:31
【问题描述】:

我已按顺序链接了一组 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。在 standalone 中,我们没有指定任何任务执行器(默认为 SyncTaskExecutor),并且作业流程运行良好。但是在 Jboss 中部署时,我们使用 SimpleAsyncTaskExecutor,因为使用 SyncTaskExecutor 甚至不会触发 Jboss 中的作业。

我在这里缺少什么或者我在这里做错了什么。?请提出建议。

【问题讨论】:

    标签: spring jboss spring-batch taskmanager spring-batch-admin


    【解决方案1】:

    解决了这个问题。 我提供了如下所示的 job-launcher="jobLauncher" 属性。因此,启动了单独的线程,并且并行触发了作业。

      <batch:job ref="externalJob1" job-launcher="jobLauncher">
    

    现在我已从所有作业中删除了 joblauncher 引用,并且作业正在按设计触发。

    【讨论】:

      猜你喜欢
      • 2020-01-04
      • 1970-01-01
      • 2014-12-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多