使用 Data Flow 部署 Spring Batch 应用程序
在本节中,我们将演示如何使用 Data Flow 注册 Spring Batch 应用程序,创建任务定义,并在 Cloud Foundry、Kubernetes 和本地机器上启动任务定义。
先决条件
在开始本示例之前,您需要:
- 安装 Spring Cloud Data Flow。
- 安装本项目中使用的 Spring Cloud Task 项目。
Data Flow 安装
您必须已将 Spring Cloud Data Flow 安装到以下平台之一:
Spring Batch 项目
在本指南中,我们使用 Spring Batch Jobs 示例 Spring Batch 应用程序,名为 billrun
。如果您尚未执行此操作,请按照说明编写代码并构建 Spring Batch 应用程序。
创建任务定义
我们将注册批处理应用程序,为该应用程序创建一个简单的任务定义,并使用 Data Flow 服务器启动该任务定义。Data Flow 服务器提供了一个全面的 API 来执行必要的步骤。Data Flow 服务器包含一个 Data Flow Dashboard Web UI 客户端。此外,您还可以使用 Data Flow Shell 命令行界面 (CLI),它可以单独下载。CLI 和 UI 都公开了完整的 API 功能。使用哪个取决于个人喜好,但 UI 界面友好,因此我们在此处重点介绍它。
Data Flow Dashboard
假设您已安装Data Flow 并在受支持的平台之一上运行,请在浏览器中打开 <data-flow-url>/dashboard
。其中,<data-flow-url>
取决于平台。请参阅安装指南以确定安装的基本 URL。如果 Data Flow 在您的本地机器上运行,请访问 http://localhost:9393/dashboard。
应用程序注册
Data Flow 仪表板会进入“应用程序注册”视图,我们可以在其中注册示例 Spring Batch 应用程序。下图显示了“应用程序注册”视图
应用程序注册概念
Data Flow 中的应用程序注册为命名资源,以便在使用 Data Flow DSL 配置和组合任务时可以引用它们。注册将逻辑应用程序名称和类型与其物理资源相关联,物理资源由 URI 指定。URI 符合模式,并且可以表示 Maven 工件、Docker 镜像或实际的 http(s)
或 file
URL。Data Flow 定义了一些逻辑应用程序类型,这些类型指示其作为流组件、任务或独立应用程序的角色。在这种情况下,我们的 Spring Batch 应用程序注册为 task
类型。您还需要指定应用程序是基于 Spring Boot 2.7.x 还是 Spring 3.x 的应用程序。在我们下面的示例中,我们将注册 Spring Boot 2.7.x 应用程序。
为了使 Spring Batch 应用程序能够由 Data Flow 启动,它还必须是 Spring Cloud Task 应用程序。这是通过将 @EnableTask
添加到配置类或应用程序来完成的,如我们的示例中所示。
注册应用程序
Spring Cloud Data Flow 支持使用 Maven、HTTP、文件和 Docker 资源进行本地部署。在本例中,我们使用 Maven 资源。Maven 工件的 URI 通常采用 maven://<groupId>:<artifactId>:<version>
的形式。示例应用程序的 Maven URI 如下所示
maven://io.spring:billrun:0.0.1-SNAPSHOT
maven:
协议指定了一个 Maven 工件,该工件通过使用为 Data Flow 服务器配置的远程和本地 Maven 存储库进行解析。要注册应用程序,请选择 **添加应用程序**。出现 **添加应用程序** 页面后,选择 **注册一个或多个应用程序**。填写表单并单击 **导入应用程序**,如下所示
Spring Cloud Data Flow 支持使用 Maven、HTTP 和 Docker 资源进行本地部署。在本例中,我们使用 HTTP(实际上是 HTTPS)资源。HTTPS 资源的 URI 采用 https://<web-path>/<artifactName>-<version>.jar
的形式。然后,Spring Cloud Data Flow 会从 HTTPS URI 中拉取工件。
示例应用程序的 HTTPS URI 如下所示
maven://io.spring:billrun:0.0.1-SNAPSHOT
要注册应用程序,请选择 **添加应用程序**。出现 **添加应用程序** 页面后,选择 **注册一个或多个应用程序**。填写表单并单击 **导入应用程序**,如下所示
Spring Cloud Data Flow 支持使用 Docker 资源进行 Kubernetes 部署。Docker 镜像的 URI 采用 docker:<docker-image-path>/<imageName>:<version>
的形式,并使用为 Data Flow 任务平台配置的 Docker 注册表和镜像拉取策略进行解析。
示例应用程序的 Docker URI 如下所示
docker:springcloudtask/billrun:0.0.1-SNAPSHOT
要注册应用程序,请选择 **添加应用程序**。出现 **添加应用程序** 页面后,选择 **注册一个或多个应用程序**。填写表单并单击 **导入应用程序**,如下所示
创建任务定义
要创建任务定义,请执行以下操作
- 从左侧导航栏中选择 **任务**。
- 选择 **创建任务**。这将显示一个图形编辑器,我们可以使用它来组合任务。初始画布包含
开始
和结束
节点。在画布的左侧,我们可以看到可用的任务应用程序,包括我们刚刚注册的billrun
。 - 将该任务(
billrun
)拖动到画布上,并将该任务连接到“开始”和“结束”节点以完成任务定义。在这种情况下,任务定义包含单个任务应用程序。如果应用程序定义了配置属性,我们将在此处设置它们。下图显示了用于创建任务的 UI: - 点击创建任务。这会提示您命名任务定义,它是我们要部署的运行时配置的逻辑名称。在本例中,我们使用与任务应用程序相同的名称,即
billrun
。现在我们看到确认视图,如下所示: - 点击创建任务。这将显示主任务视图。
启动任务
下图显示了“任务”视图,您可以从中启动任务
要启动任务,请执行以下操作:
- 单击要启动的任务行上的选项控件,然后选择启动选项。这将带您进入一个表单,您可以在其中添加命令行参数和部署属性,但此任务不需要任何参数。
- 点击启动任务。执行此操作将在数据流服务器的任务平台上运行任务,并记录一个新的任务
执行
。执行完成后,“状态”将变为绿色,并显示完成
。选择执行选项卡以查看此任务的执行摘要。
查看作业执行
现在我们已经成功启动了任务,我们可以检查应用程序执行的作业的状态。要查看作业执行,请单击界面左侧的作业执行选项卡。下图显示了作业视图
现在我们可以查看我们的作业执行,我们可以深入了解每个作业执行的详细信息。您可以通过单击作业执行上的执行 ID 链接来执行此操作,这将显示该作业执行的详细信息,如下图所示
此外,对于每次作业执行,我们可以查看每个步骤的步骤详细信息。您可以通过单击步骤名称来执行此操作 - 在我们的例子中,它是 BillProcessing
。下图显示了步骤执行视图