批处理作业调度

批处理开发者指南中,我们向您展示了如何构建批处理应用程序并以临时方式启动它们。
但是,批处理作业通常在预定时间或基于事件启动。在本节中,我们将向您展示如何使用 Spring Cloud Data Flow 调度批处理作业的启动。

Spring Cloud Data Flow 调度概述

Spring Cloud Data Flow 允许您通过设置 cron 表达式来安排任务的启动时间。您可以通过 RESTful API 或 Spring Cloud Data Flow UI 创建调度。Spring Cloud Data Flow 通过云平台上可用的调度代理来调度任务的执行。 调度架构 当使用 Cloud Foundry 平台时,Spring Cloud Data Flow 使用 PCF Scheduler。当使用 Kubernetes 时,则使用 cron 作业。

安排批处理作业

请确保您已按照《入门指南》中的说明注册了时间戳应用程序并为其创建了定义。我们使用 UI 来安排 timestamp-task,方法是按下 下拉 按钮并选择“计划”选项,如下图所示: 创建计划

在本场景中,我们希望每分钟启动一次此应用程序。为此,请填写“计划设置”页面,如下所示

在以下示例中,我们将计划的名称设置为 timestamp-task-once-a-minute,并将 cron 表达式 设置为 */1 * ? * *。请注意,cron 表达式采用 Quartz 使用的格式。另请注意,我们可以为此计划添加命令行参数和部署参数,但在此示例中我们不这样做。输入 cron 表达式后,请按“创建计划”按钮。现在,PCF Scheduler 将处理您的批处理应用程序的计划启动。

Schedule Batch App Cloud Foundry

在以下示例中,我们将计划的名称设置为 timestamp-task-once-a-minute,并将 cron 表达式 设置为 */1 * * * *。请注意,我们可以为此计划添加命令行参数和部署参数,但在此示例中我们不这样做。现在,请按“创建计划”按钮。现在,已创建一个 Cron 作业来处理您的批处理应用程序的计划启动。

Schedule Batch App Kubernetes

Spring Cloud Data Flow 没有提供用于在本地平台上安排任务启动的开箱即用解决方案。
但是,至少有两个 Spring Boot 原生解决方案提供了计划选项。您可以将它们实现为自定义解决方案,以使计划在本地运行的 SCDF 中起作用。

Spring Boot 实现 Quartz Scheduler

一种选择是创建一个 Spring Boot 应用程序,该应用程序使用 Quartz scheduler 来创建 RESTful API 调用以在 Spring Cloud Data Flow 上启动任务。有关更多信息,请参阅此处

Spring Boot 实现 @Scheduled 注解

另一种选择是创建一个 Spring Boot 应用程序,该应用程序在创建 RESTful API 调用以在 Spring Cloud Data Flow 上启动任务的方法上使用 @Scheduled 注解。您可以在Spring Boot 文档中阅读有关它的更多信息。

创建任务计划时,您可以为计划应用程序指定命令行参数和部署属性,就像启动任务时指定它们一样。您可以在批处理功能指南中阅读更多关于指定部署属性的信息。

监控任务启动

您可以在 Spring Cloud Data Flow 的任务执行选项卡上查看每个计划启动的状态。

SCDF Scheduled Executions

删除计划

计划选项卡中,按下要删除的计划旁边的下拉按钮,然后选择“销毁”选项,如下图所示: Delete Schedule

出现确认对话框时,请按删除计划按钮。 SCDF Confirm Schedule Delete