【发布时间】: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