Выполнение цепочки пакетных заданий Spring, не ожидающее завершения предыдущего задания в Jboss

Я связал набор пакетных заданий 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.

Что мне здесь не хватает или я делаю что-то не так? Пожалуйста, предложите.


person Arun Selva    schedule 19.07.2017    source источник


Ответы (1)


Решил проблему. Я предоставил свойство job-launcher="jobLauncher", как показано ниже. Поэтому запускались отдельные потоки, и задания запускались параллельно.

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

Теперь я удалил ссылку на средство запуска заданий из всех заданий, и задания запускаются, как задумано.

person Arun Selva    schedule 20.07.2017