本文档介绍如何创建拉取订阅。您可以使用 Google Cloud 控制台、Google Cloud CLI、客户端库或 Pub/Sub API 来创建拉取订阅。
准备工作
所需的角色和权限
如需创建订阅,您必须在项目级别配置访问权限控制。如果您的订阅和主题位于不同的项目中,则还需要资源级权限,如本部分稍后所述。
如需获取创建拉取订阅所需的权限,请让管理员授予您项目的 Pub/Sub Editor (roles/pubsub.editor
) IAM 角色。如需详细了解如何授予角色,请参阅管理访问权限。
此预定义角色包含创建拉取订阅所需的权限。如需查看所需的确切权限,请展开所需权限部分:
所需权限
如需创建拉取订阅,您必须拥有以下权限:
-
从订阅中拉取:
pubsub.subscriptions.consume
-
创建订阅:
pubsub.subscriptions.create
-
删除订阅:
pubsub.subscriptions.delete
-
获取订阅:
pubsub.subscriptions.get
-
列出订阅:
pubsub.subscriptions.list
-
更新订阅:
pubsub.subscriptions.update
-
为主题附加订阅:
pubsub.topics.attachSubscription
-
获取订阅的 IAM 政策:
pubsub.subscriptions.getIamPolicy
-
为订阅配置 IAM 政策:
pubsub.subscriptions.setIamPolicy
如果您需要在一个与另一个项目中的主题相关联的项目中创建拉取订阅,请让主题管理员也向您授予该主题的 Pub/Sub Editor (roles/pubsub.editor)
IAM 角色。
拉取订阅属性
配置拉取订阅时,您可以指定以下属性。
通用属性
了解您可以为所有订阅设置的常见订阅属性。
仅传送一次
仅传送一次。如果设置了此字段,则 Pub/Sub 将执行正好一次传送保证。如果未指定,订阅支持每条消息至少传送一次。
创建拉取订阅
以下示例演示了如何使用提供的默认设置创建采用拉取传送的订阅。
控制台
如需创建拉取订阅,请完成以下步骤。
在 Google Cloud 控制台中,进入订阅页面。
- 点击创建订阅。
在订阅 ID 字段中,输入一个名称。
如需了解如何为订阅命名,请参阅主题或订阅命名准则。
- 从下拉菜单中选择或创建一个主题。订阅会从主题接收消息。
- 将传送类型保留为拉取。
- 保留所有其他默认值。
- 点击创建。
您还可以在主题部分中创建订阅。此快捷方式可帮助您将主题与订阅关联。
gcloud
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
-
如需创建拉取订阅,请运行
gcloud pubsub subscriptions create
命令。gcloud pubsub subscriptions create SUBSCRIPTION_ID --topic=TOPIC_ID
替换以下内容:
SUBSCRIPTION_ID
:新拉取订阅的名称或 ID。TOPIC_ID
:主题的名称或 ID。
REST
如需创建拉取订阅,请使用
projects.subscriptions.create
方法:
请求:
必须使用 Authorization
标头中的访问令牌对请求进行身份验证。如需获取当前应用默认凭据的访问令牌,请执行以下操作:
gcloud auth application-default print-access-token
。
PUT https://pubsub.googleapis.com/v1/projects/PROJECT_ID/subscriptions/SUBSCRIPTION_ID Authorization: Bearer ACCESS_TOKEN
请求正文:
{ "topic": "projects/PROJECT_ID/topics/TOPIC_ID" }
其中:
响应:
{ "name": "projects/PROJECT_ID/subscriptions/SUBSCRIPTION_ID", "topic": "projects/PROJECT_ID/topics/TOPIC_ID", "pushConfig": {}, "ackDeadlineSeconds": 10, "messageRetentionDuration": "604800s", "expirationPolicy": { "ttl": "2678400s" } }
C++
试用此示例之前,请按照 Pub/Sub 快速入门:使用客户端库中的 C++ 设置说明进行操作。如需了解详情,请参阅 Pub/Sub C++ API 参考文档。
要向 Pub/Sub 进行身份验证,请设置应用默认凭据。如需了解详情,请参阅为客户端库设置身份验证。
C#
试用此示例之前,请按照 Pub/Sub 快速入门:使用客户端库中的 C# 设置说明进行操作。如需了解详情,请参阅 Pub/Sub C# API 参考文档。
要向 Pub/Sub 进行身份验证,请设置应用默认凭据。如需了解详情,请参阅为客户端库设置身份验证。
Go
试用此示例之前,请按照 Pub/Sub 快速入门:使用客户端库中的 Go 设置说明进行操作。如需了解详情,请参阅 Pub/Sub Go API 参考文档。
要向 Pub/Sub 进行身份验证,请设置应用默认凭据。如需了解详情,请参阅为客户端库设置身份验证。
Java
试用此示例之前,请按照 Pub/Sub 快速入门:使用客户端库中的 Java 设置说明进行操作。如需了解详情,请参阅 Pub/Sub Java API 参考文档。
要向 Pub/Sub 进行身份验证,请设置应用默认凭据。如需了解详情,请参阅为客户端库设置身份验证。
Node.js
Node.js
PHP
试用此示例之前,请按照 Pub/Sub 快速入门:使用客户端库中的 PHP 设置说明进行操作。如需了解详情,请参阅 Pub/Sub PHP API 参考文档。
要向 Pub/Sub 进行身份验证,请设置应用默认凭据。如需了解详情,请参阅为客户端库设置身份验证。
Python
试用此示例之前,请按照 Pub/Sub 快速入门:使用客户端库中的 Python 设置说明进行操作。如需了解详情,请参阅 Pub/Sub Python API 参考文档。
要向 Pub/Sub 进行身份验证,请设置应用默认凭据。如需了解详情,请参阅为客户端库设置身份验证。
Ruby
试用此示例之前,请按照 Pub/Sub 快速入门:使用客户端库中的 Ruby 设置说明进行操作。如需了解详情,请参阅 Pub/Sub Ruby API 参考文档。
要向 Pub/Sub 进行身份验证,请设置应用默认凭据。如需了解详情,请参阅为客户端库设置身份验证。