本页介绍了如何创建 Cloud Tasks 队列。将任务添加到队列后,队列会分派这些任务,并确保服务(也称为工作器)可靠地处理这些任务。
请注意以下几点:
队列名称由三个部分组成:项目 ID、位置和队列 ID。 您必须具有提供项目 ID 的 Google Cloud 项目。
如果您使用的是 App Engine 目标任务,则还必须具有 App Engine 应用。该应用位于特定的区域,且此区域是队列和处理程序运行的位置。记下您添加应用时所在的区域。
使用 HTTP Target 任务不需要 App Engine 应用。在创建队列时,您可以选择 Google Cloud 位置。
创建队列
您可以通过以下方式创建队列:
- 在 Google Cloud Console 中
- 在终端或 Cloud Shell 中使用 Google Cloud CLI
- 通过向 Cloud Tasks API 发送直接请求
使用 gcloud tasks queues create
命令创建队列:
gcloud tasks queues createQUEUE_ID \ --location=LOCATION
替换以下内容:
QUEUE_ID
:您为队列分配的标识符,例如my-queue
。LOCATION
:队列将运行的受支持区域,例如asia-south1
。如果贵组织限制了资源位置,而您想在
us-central1
或us-central2
中创建队列,则组织政策必须允许同时在us-central1
和us-central2
中创建队列(即使您只需要在其中一个区域中创建队列)。
您可以使用 gcloud CLI 命令的其他标志来配置速率限制、重试选项、队列类型等。
如需创建队列,请使用 projects.locations.queues.create
方法。
在使用任何请求数据之前,请先进行以下替换:
:您的 Google Cloud 项目 ID。PROJECT_ID
:队列将运行的受支持区域,例如LOCATION asia-south1
。如果贵组织限制了资源位置,而您想在
us-central1
或us-central2
中创建队列,则组织政策必须允许同时在us-central1
和us-central2
中创建队列(即使您只需要在其中一个区域中创建队列)。
:您为队列分配的标识符,例如QUEUE_ID my-queue
。
Queue
资源的其他可配置属性包括速率限制、重试选项、队列类型等。
请求 JSON 正文:
{ "name": "projects/PROJECT_ID /locations/LOCATION /queues/QUEUE_ID " }
如需发送您的请求,请展开以下选项之一:
curl(Linux、macOS 或 Cloud Shell)
将请求正文保存在名为 request.json
的文件中。在终端中运行以下命令,在当前目录中创建或覆盖此文件:
cat > request.json << 'EOF' { "name": "projects/PROJECT_ID /locations/LOCATION /queues/QUEUE_ID " } EOF
然后,执行以下命令以发送 REST 请求:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://cloudtasks.googleapis.com/v2/projects/PROJECT_ID /locations/LOCATION /queues"
PowerShell (Windows)
将请求正文保存在名为 request.json
的文件中。在终端中运行以下命令,在当前目录中创建或覆盖此文件:
@' { "name": "projects/PROJECT_ID /locations/LOCATION /queues/QUEUE_ID " } '@ | Out-File -FilePath request.json -Encoding utf8
然后,执行以下命令以发送 REST 请求:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://cloudtasks.googleapis.com/v2/projects/PROJECT_ID /locations/LOCATION /queues" | Select-Object -Expand Content
APIs Explorer(浏览器)
复制请求正文并打开方法参考页面。APIs Explorer 面板会在页面右侧打开。您可以与此工具进行交互以发送请求。 将请求正文粘贴到此工具中,填写任何其他必填字段,然后点击执行。
如果成功,响应正文将包含一个新创建的 Queue
实例:
{ "name": "projects/PROJECT_ID /locations/LOCATION /queues/QUEUE_ID ", "rateLimits": { "maxDispatchesPerSecond": 500, "maxBurstSize": 100, "maxConcurrentDispatches": 1000 }, "retryConfig": { "maxAttempts": 100, "minBackoff": "0.100s", "maxBackoff": "3600s", "maxDoublings": 16 }, "state": "RUNNING" }
新创建的队列可能需要几分钟时间才能使用。
描述您的队列
您可以通过以下方式确认队列是否已成功创建:
- 在 Google Cloud Console 中
- 在终端或 Cloud Shell 中使用 gcloud CLI
通过向 Cloud Tasks API 发送直接请求
在 Google Cloud 控制台中,依次前往 Cloud Tasks > 队列页面。
绿色对勾标记
应表示队列正在运行。如需了解详情,请点击队列的名称,然后点击配置标签页。
使用 gcloud tasks queues describe
命令验证您的队列是否创建成功:
gcloud tasks queues describeQUEUE_ID \ --location=LOCATION
替换以下内容:
QUEUE_ID
:队列 ID(其缩写名称)LOCATION
:队列的位置
输出应类似如下所示:
name: projects/PROJECT_ID /locations/LOCATION /queues/QUEUE_ID rateLimits: maxBurstSize: 100 maxConcurrentDispatches: 1000 maxDispatchesPerSecond: 500.0 retryConfig: maxAttempts: 100 maxBackoff: 3600s maxDoublings: 16 minBackoff: 0.100s state: RUNNING
如需检索队列,请使用 projects.locations.queues.get
方法。
在使用任何请求数据之前,请先进行以下替换:
:您的 Google Cloud 项目 ID。PROJECT_ID
:队列部署到的区域,例如LOCATION us-central1
。
:队列的短 ID,例如QUEUE_ID my-queue
。
如需发送您的请求,请展开以下选项之一:
curl(Linux、macOS 或 Cloud Shell)
执行以下命令:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://cloudtasks.googleapis.com/v2/projects/PROJECT_ID /locations/LOCATION /queues/QUEUE_ID "
PowerShell (Windows)
执行以下命令:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://cloudtasks.googleapis.com/v2/projects/PROJECT_ID /locations/LOCATION /queues/QUEUE_ID " | Select-Object -Expand Content
APIs Explorer(浏览器)
打开方法参考页面。APIs Explorer 面板会在页面右侧打开。您可以与此工具进行交互以发送请求。 填写所有必填字段,然后点击执行。
如果成功,则响应正文包含一个 Queue
实例:
{ "name": "projects/PROJECT_ID /locations/LOCATION /queues/QUEUE_ID ", "rateLimits": { "maxDispatchesPerSecond": 500, "maxBurstSize": 100, "maxConcurrentDispatches": 1000 }, "retryConfig": { "maxAttempts": 100, "minBackoff": "0.100s", "maxBackoff": "3600s", "maxDoublings": 16 }, "state": "RUNNING" }
排查创建队列时出现的问题
如果您没有看到预期的输出,可以尝试以下操作:
- 等待至少一分钟时间,以便队列进行初始化。
确保不存在有相同 ID 的队列。您可以使用
gcloud tasks queues list
命令查看项目中的队列:gcloud tasks queues list \ --location=
LOCATION 如要搜索多个位置,您需要发出多个请求。
检查您是否已达到队列配额:
在 Google Cloud 控制台中,前往 Cloud Tasks API 的 API/Service Details 页面。
点击配额和系统限制标签页。
如需增加配额,请在相应配额对应的行中,依次点击省略号图标 > 修改配额。
如需了解详情,请参阅申请更高的配额值。
重新运行命令以创建队列,并确保每个步骤都已正确完成。