有没有办法将正在运行的 Spring Batch 作业的生命周期限制为例如23小时?
我们每天通过 cron 作业启动批处理作业,该作业大约需要 9 个小时。在某些情况下,数据库连接速度太慢,导致作业需要 60 多个小时才能完成。问题是下一个作业实例会在第二天由 cronjob 启动 - 然后在后天启动另一个实例 - 然后另一个实例......
如果这项工作没有在例如时间内完成23小时后,我想终止它并返回错误。有没有办法用 spring-batch 来做到这一点?
Using a 步骤监听器您可以通过致电来停止工作StepExecution#setTerminateOnly
.
stepBuilderFactory
...
.writer(writer)
.listener(timeoutListener)
...
.build()
TimeoutListener 可能看起来像这样
@Component
public class TimeoutListener implements StepListener {
private StepExecution stepExecution;
@BeforeStep
public void beforeStep(StepExecution stepExecution) {
this.stepExecution = stepExecution;
}
@BeforeRead
public void beforeRead() {
if (jobShouldStop()) {
stepExecution.setTerminateOnly();
}
}
private boolean jobShouldStop() {
// ...
}
}
这将正常停止作业,而不会强制终止任何正在运行的步骤。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)