您可以对使用 Cloud Tasks REST API、RPC API 或 Google Cloud 客户端库的异步代码执行任务排队,并使用 Java 11/17 App Engine 标准服务作为推送目标。
此 Java 11 示例使用两个应用:
tasks
应用作为命令行工具在本地运行,用于创建任务并将其添加到队列中。tasks-handler
Spring Boot 应用作为处理 Cloud Tasks 请求的工作器,充当接收任务请求的端点。这是您部署的主 App Engine 应用。
准备工作
要部署示例应用,请执行以下操作:
- 下载并安装 Java SE 11 开发工具包 (JDK)。
- 完成 Cloud Tasks 设置说明。
- 下载并安装 Maven 来构建、部署和管理应用。
- 初始化 gcloud CLI 并将其配置为使用您刚才创建的项目。
安装 gcloud CLI
app-engine-java
组件:gcloud components install app-engine-java
设置示例
要下载并安装示例应用,请执行以下操作:
将示例应用代码库克隆到本地机器:
git clone https://github.com/GoogleCloudPlatform/java-docs-samples.git
或者,您也可以下载该示例的 zip 文件并将其解压缩。导航到
tasks-handler
应用的顶级目录:cd java-docs-samples/appengine-java11/tasks-handler/
将
tasks-handler
应用部署到 App Engine:mvn package appengine:deploy -Dapp.deploy.projectId=PROJECT_ID
将 PROJECT_ID 替换为您的 Cloud 项目 ID。如果您的
pom.xml
文件已经指定了您的项目 ID,则您无需在运行的命令中添加-Dapp.deploy.projectId
属性。
创建队列
使用 Google Cloud CLI gcloud queues
命令创建队列。
在命令行中输入以下内容:
gcloud tasks queues create MY_QUEUE
等待队列初始化。使用
describe
命令来验证队列的创建:gcloud tasks queues describe MY_QUEUE
输出应类似于以下内容:
name: projects/PROJECT_ID/locations/LOCATION_ID/queues/MY_QUEUE // Note these ids rateLimits: maxBurstSize: 100 maxConcurrentDispatches: 1000 maxDispatchesPerSecond: 500.0 retryConfig: maxAttempts: 100 maxBackoff: 3600s maxDoublings: 16 minBackoff: 0.100s state: RUNNING
向队列添加任务
在本地创建任务,将其添加到您设置的队列,并将该任务交付给异步工作器:
转到
appengine-java11/tasks
目录并编译应用:cd ../tasks mvn package
在您的机器上设置以下环境变量。示例应用使用这些环境变量来创建将任务添加到队列的请求:
export GOOGLE_CLOUD_PROJECT=PROJECT_ID // The project ID you set up above export LOCATION_ID=LOCATION_ID // The region in which your queue is running export QUEUE_ID=MY_QUEUE // The queue you created above
注意:您可以使用以下gcloud
命令查找位置 ID:gcloud tasks locations list
创建一个以您部署的任务处理程序控制器上的
/tasks/create
端点为目标、具有指定载荷的任务。载荷可以是工作器完成任务处理所需请求中的任何数据;在本例中,它已硬编码到示例中,无需指定:mvn exec:java -Dexec.mainClass="com.example.task.CreateTask"
任务传递给工作器并且工作器处理完任务后,工作器将向 Cloud Tasks 服务返回一个 2xx 成功状态代码,并自动从队列中删除该任务。通过显示工作器服务的日志来验证是否已收到任务:
gcloud app logs read
后续步骤
现在您已完成向 Cloud Tasks 队列添加任务的操作,请查看以下页面,继续探索 Cloud Tasks:
- 管理现有任务和队列,包括通过管理队列和任务将其删除。
- 按照创建 Cloud Tasks 队列指南创建和配置 Cloud Tasks 队列。
- 参阅 gRPC API 参考,详细了解如何使用 gRPC 进行队列管理。
- 参阅 REST API 参考,详细了解如何使用 REST 进行队列管理。
- 参阅 Cloud Tasks 概览,了解关于 Cloud Tasks 队列的更多信息