Spring Boot 与 Docker
观察 GraphQL 的实际运行

Spring Cloud Task 入门指南

本指南将带您了解 Spring Cloud Task 的概述,以及创建和启动一个短期应用程序的过程。

从 Spring Initializr 开始

您可以使用这个预初始化项目并点击生成以下载一个ZIP文件。该项目已配置为适合本教程中的示例。

手动初始化项目的方法如下:

  1. 导航到 https://start.spring.io。该服务会拉取应用程序所需的所有依赖项,并为您完成大部分设置工作。

  2. 选择 Gradle 或 Maven 以及您想要使用的语言。本指南假设您选择了 Java。

  3. 点击 Dependencies,并选择 TaskH2 DatabaseJDBC APIMariaDB Driver

  4. 点击 Generate

  5. 下载生成的 ZIP 文件,这是一个根据您的选择配置的任务应用程序的存档。

如果您的 IDE 集成了 Spring Initializr,您可以直接在 IDE 中完成这个过程。

您还可以从 Github 上 fork 该项目,并在您的 IDE 或其他编辑器中打开它。

什么是 Spring Cloud Task?

Spring Cloud Task 是一个用于构建短期 Spring Boot 微服务的框架,例如批处理数据处理任务。您可以通过 项目站点文档示例 了解更多关于该框架的信息。

任务应用程序概览

在本指南中,我们将开发一个使用 Spring Cloud Task 的 Spring Boot 应用程序,并将其部署到本地机器上。我们最初使用 H2 数据库来演示 Spring Cloud Task 的功能,但 Spring Cloud Task 的真正价值在于它能够将执行任务的结果存储在持久化数据存储中。在这个示例中,我们将通过使用 MariaDB 作为持久化数据存储来逐步推进。

使用内存中的 H2 数据库的 Spring Cloud Task

第一步,我们使用带有嵌入式 H2 数据存储的 Spring Cloud Task。如果在项目初始化时没有检测到 spring.datasource 属性,Spring Cloud Task 会启动一个新的 H2 实例来存储已执行的任务结果。这一过程无需任何额外配置。这为快速启动和运行提供了便利,但当应用程序完成并关闭 H2 数据库时,已执行任务的结果将会丢失。在本指南的这一步中,请确保 application.properites 中的 spring.datasource 属性被注释掉。

使用持久化 MariaDB 的 Spring Cloud Task

为了持久化比我们短期任务生命周期更长的数据,我们需要一个外部可用的数据存储。在本指南中,我们使用运行在 Docker 容器中的 MariaDB 实例。

要跟随本指南操作,您需要在本地运行 Docker。

要在本地运行 MariaDB,请执行以下命令:

docker run -p 3306:3306 --name mariadb -e MYSQL_ROOT_PASSWORD=password -e MYSQL_DATABASE=task -d mariadb:latest

当 MariaDB 实例运行时,通过 application.properties 为您的应用程序提供配置:

spring.datasource.url=jdbc:mariadb://localhost:3306/task
spring.datasource.username=root
spring.datasource.password=password
spring.datasource.driver-class-name=org.mariadb.jdbc.Driver

再次运行应用程序现在应该会将任务执行的结果存储在 MariaDB 实例中。您可以通过进入 Docker 容器的 shell 来验证这一点:

docker exec -it mariadb mariadb --user root -ppassword

然后执行以下命令

use task;
show tables; --show all tables that Spring Cloud Task created
select * from TASK_EXECUTION;

在 MariaDB 实例运行期间,您应该能够看到所有执行的程序运行记录。

总结

恭喜!您已经完成了 Spring Cloud Task 的高级概述,并且能够构建、测试并启动一个 Spring Cloud Task 应用程序。

本页目录