spring cloud dataflow - 检测运行任务

时间:2018-02-13 10:59:12

标签: spring-cloud-dataflow

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

我正在查看任务执行状态功能,特别是“结束时间”,但我注意到有时任务执行状态可以设置“开始时间”,同时“退出代码”设置为0并且“结束时间”未设置。 因此,“结束时间”看起来不像一个可行的决定因素。

Task execution list

实现这一目标的最佳方式是什么?

感谢。

1 个答案:

答案 0 :(得分:0)

在SCDF级别,我们(尚未)具有将其作为业务流程层的一部分进行控制的本机能力。但是,有一些选择是可能的。

1)您可以让Task应用程序通过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解决方案。