代码之家  ›  专栏  ›  技术社区  ›  Vedran Smid

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

  •  0
  • Vedran Smid  · 技术社区  · 6 年前

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

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

    Task execution list

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

    谢谢

    1 回复  |  直到 6 年前
        1
  •  0
  •   Sabby Anandan    6 年前

    在SCDF级别,我们还没有(目前)将其作为业务流程层的一部分进行本地控制的能力。不过,有几种选择是可能的。

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

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

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