在 Pub/Sub 中,主题是命名资源,代表 消息推送您必须先创建主题,然后才能发布或订阅 。Pub/Sub 支持两种主题:标准主题和 导入主题。
本文档介绍如何创建 Pub/Sub 标准主题。如果 如果您想详细了解导入主题以及如何创建导入主题,请参阅 创建导入主题。
如需创建主题,您可以使用 Google Cloud 控制台、Google Cloud CLI 客户端库或 Pub/Sub API
准备工作
了解 Pub/Sub 服务及其术语。
了解发布流程。
管理主题所需的角色和权限
要获取创建和管理主题所需的权限,
请让管理员授予您
Pub/Sub Editor(roles/pubsub.editor
)
针对您的主题或项目的 IAM 角色。
如需详细了解如何授予角色,请参阅管理访问权限。
此预定义角色包含 创建和管理主题所需的权限。如需查看所需的确切权限,请展开所需权限部分:
所需权限
要创建和管理主题,您需要拥有以下权限:
-
创建主题:
pubsub.topics.create
-
删除主题:
pubsub.topics.delete
-
将订阅与主题分离:
pubsub.topics.detachSubscription
-
获取主题:
pubsub.topics.get
-
列出主题:
pubsub.topics.list
-
发布到主题:
pubsub.topics.publish
-
更新主题:
pubsub.topics.update
-
获取主题的 IAM 政策:
pubsub.topics.getIamPolicy
-
为主题配置 IAM 政策:
pubsub.topics.setIamPolicy
您可以在项目级别和单个 资源层级。您可以在一个项目中创建订阅,然后 将其附加到位于其他项目中的主题。 确保您拥有 资源。
主题的属性
创建或更新主题时,您必须指定其属性。
-
添加默认订阅。添加默认订阅 Pub/Sub 主题您可以创建其他订阅 。默认订阅的 以下属性:
-sub
的订阅 ID- 拉取传送类型
- 消息保留 7 天
- 闲置 31 天后失效
- 10 秒的确认时限
- 立即重试政策
- 架构 -架构是消息数据字段 。架构是发布者和订阅者之间的合约 Pub/Sub 强制执行的权限上限。主题架构有助于实现标准化 消息类型和权限,以允许不同的 团队。Pub/Sub 用于创建一个 消息类型和权限的授权。要使用以下内容创建主题: 请参阅架构概览。
-
启用提取。通过启用此属性,您可以 将外部来源的流式数据注入主题中, 如何利用 Google Cloud 的功能。创建导入主题 如需了解注入,请参阅创建导入主题。
-
消息保留时长。指定 Pub/Sub 主题在消息发布后保留消息。在 消息保留时长超过,Pub/Sub 可能会舍弃 无论其确认状态如何。消息存储费用 需要为存储发布到主题的所有消息付费。
- 默认 = 未启用
- 最小值 = 10 分钟
- 最大值 = 31 天
- 使用客户管理的加密密钥 (CMEK)。指定是否 该主题使用 CMEK 加密。Pub/Sub 对消息进行加密 默认使用 Google 拥有的密钥和 Google 管理的密钥。如果您指定此选项 Pub/Sub 将信封加密模式与 CMEK 结合使用。在 因此 Cloud KMS 不会对消息进行加密。Cloud KMS 对 Pub/Sub 创建的数据加密密钥 (DEK) 进行加密 。Pub/Sub 使用 系统为该主题生成的 DEK。Pub/Sub 将 。有关 请参阅 配置邮件加密。
创建主题
请先创建主题,然后才能发布或订阅该主题。
控制台
如需创建主题,请按以下步骤操作:
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 topics create
命令:gcloud pubsub topics create TOPIC_ID
REST
要创建主题,请使用
projects.topics.create
方法:
必须使用 Authorization
标头中的访问令牌对请求进行身份验证。如需获取当前应用默认凭据的访问令牌,请运行以下命令:gcloud auth application-default print-access-token
。
PUT https://pubsub.googleapis.com/v1/projects/PROJECT_ID/topics/TOPIC_ID Authorization: Bearer ACCESS_TOKEN
其中:
响应:
{ "name": "projects/PROJECT_ID/topics/TOPIC_ID" }
C++
在尝试此示例之前,请按照C++ Pub/Sub 快速入门: 客户端库。 有关详情,请参阅 Pub/Sub C++ API 参考文档。
如需向 Pub/Sub 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
C#
在尝试此示例之前,请按照C# Pub/Sub 快速入门: 客户端库。 有关详情,请参阅 Pub/Sub C# API 参考文档。
如需向 Pub/Sub 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Go
在尝试此示例之前,请按照Go Pub/Sub 快速入门: 客户端库。 有关详情,请参阅 Pub/Sub Go API 参考文档。
如需向 Pub/Sub 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Java
在尝试此示例之前,请按照Java Pub/Sub 快速入门: 客户端库。 有关详情,请参阅 Pub/Sub Java API 参考文档。
如需向 Pub/Sub 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Node.js
Node.js
PHP
在尝试此示例之前,请按照PHP Pub/Sub 快速入门: 客户端库。 有关详情,请参阅 Pub/Sub PHP API 参考文档。
如需向 Pub/Sub 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Python
在尝试此示例之前,请按照Python Pub/Sub 快速入门: 客户端库。 有关详情,请参阅 Pub/Sub Python API 参考文档。
如需向 Pub/Sub 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Ruby
在尝试此示例之前,请按照Ruby Pub/Sub 快速入门: 客户端库。 有关详情,请参阅 Pub/Sub Ruby API 参考文档。
如需向 Pub/Sub 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
组织政策限制条件
组织政策可能会限制主题的创建,例如 政策可以限制 Compute Engine 中的消息存储 区域。为避免主题创建错误,请检查并更新 组织政策,然后创建主题。
如果您的项目是新创建的,请等待几分钟, 在创建主题之前要初始化的组织政策。
有关详情,请参阅配置邮件存储政策。
后续步骤
为您的主题选择订阅类型。
了解如何向主题发布消息。
使用 gcloud CLI 创建或修改主题, REST API 或客户端库。