在SCDF中保留计划的作业执行,直到上一个作业执行完成

问题描述

我在Openshift环境中运行SCDF。我正在计划一个Spring批处理作业,每5分钟运行一次。有时,作业可能会运行5分钟以上。在这种情况下,是否可以保留下一个计划的作业执行,直到上一个作业完成执行?

我们不想更改作业执行的频率,也不想更改间隔。

更新1: 最近,我发现使用Kubernetes cronjob我们可以添加concurrencyPolicy=forbid来阻止下一个作业的执行(如果前一个仍在运行)。

我正在寻找SCDF中的等效配置。

谢谢。

解决方法

看看属性spring.cloud.task.single-instance-enabled。 Документация-Spring-cloud-task#features-single-instance-enabled
这样可以防止运行两个具有相同名称的任务。
我检查了SCDF(2.6.1),在运行两个相同的任务时收到错误消息:

Caused by: org.springframework.cloud.task.listener.TaskExecutionException: Task with name "timestamp-task" is already running.
    at org.springframework.cloud.task.configuration.SingleInstanceTaskListener.lockTask(SingleInstanceTaskListener.java:121) ~[spring-cloud-task-core-2.2.3.RELEASE.jar!/:2.2.3.RELEASE]
    ... 31 common frames omitted