spring 云数据流 - 检测 运行 任务

spring cloud dataflow - detect running task

我正在使用 spring 云数据流 (1.3.0.RELEASE)。我想检测一个 运行 任务,以防止启动同一任务的多个实例。

我正在查看任务执行状态功能,特别是 "End Time" 但我注意到有时任务执行状态可以 "Start Time" 设置为 0 和 "End Time" 未设置。 因此,"End Time" 看起来不是一个可行的决定因素。

Task execution list

实现该目标的最佳方法是什么?

谢谢。

在 SCDF 级别,我们(还)没有将其作为编排层的一部分进行控制的本机能力。不过,有几个选项是可能的。

1) 您可以让任务应用程序通过 task-events 目的地(队列或主题)发出其 lifecycle events;它可以是标准类型或自定义事件。然后可以将流用作触发后续启动的决策点。

2) 最近2.0 M3 release of Spring Cloud Task,我们可以限制同一类型的多个Task实例的启动。对于每个任务启动,这可以通过 spring.cloud.task.singleInstanceEnabled=true 有效地控制。设置此标志后,在启动 Task 实例时,将自动应用锁定检查。因此可以防止重复或意外启动。

3) 如果您无法切换到 2.0 M3,理论上,您可以在基于 1.x 的任务应用程序上复制上面的 #2 解决方案。