GSP095

概览
Pub/Sub 是一种用于在应用和服务之间交换事件数据的通讯服务。通过分离发送者和接收者,该服务支持在独立编写的应用之间安全地进行通信并保证高可用性。Pub/Sub 提供延迟低且持久的通讯功能,开发者常使用该服务实现异步工作流,分发事件通知,以及流式传输来自各种进程或设备的数据。
学习内容
在此实验中,您将:
- 创建、删除和列出 Pub/Sub 主题和订阅
- 向主题发布消息
- 学习如何使用拉取订阅方
前提条件
本实验是入门级实验。我们预设您缺少 Pub/Sub 相关经验,将会向您介绍关于设置和使用此 Google Cloud 服务的基础知识。
设置和要求
点击“开始实验”按钮前的注意事项
请阅读以下说明。实验是计时的,并且您无法暂停实验。计时器在您点击开始实验后即开始计时,显示 Google Cloud 资源可供您使用多长时间。
此实操实验可让您在真实的云环境中开展实验活动,免受模拟或演示环境的局限。为此,我们会向您提供新的临时凭据,您可以在该实验的规定时间内通过此凭据登录和访问 Google Cloud。
为完成此实验,您需要:
- 能够使用标准的互联网浏览器(建议使用 Chrome 浏览器)。
注意:请使用无痕模式(推荐)或无痕浏览器窗口运行此实验。这可以避免您的个人账号与学生账号之间发生冲突,这种冲突可能导致您的个人账号产生额外费用。
注意:请仅使用学生账号完成本实验。如果您使用其他 Google Cloud 账号,则可能会向该账号收取费用。
如何开始实验并登录 Google Cloud 控制台
-
点击开始实验按钮。如果该实验需要付费,系统会打开一个对话框供您选择支付方式。左侧是“实验详细信息”窗格,其中包含以下各项:
- “打开 Google Cloud 控制台”按钮
- 剩余时间
- 进行该实验时必须使用的临时凭据
- 帮助您逐步完成本实验所需的其他信息(如果需要)
-
点击打开 Google Cloud 控制台(如果您使用的是 Chrome 浏览器,请右键点击并选择在无痕式窗口中打开链接)。
该实验会启动资源并打开另一个标签页,显示“登录”页面。
提示:将这些标签页安排在不同的窗口中,并排显示。
注意:如果您看见选择账号对话框,请点击使用其他账号。
-
如有必要,请复制下方的用户名,然后将其粘贴到登录对话框中。
{{{user_0.username | "<用户名>"}}}
您也可以在“实验详细信息”窗格中找到“用户名”。
-
点击下一步。
-
复制下面的密码,然后将其粘贴到欢迎对话框中。
{{{user_0.password | "<密码>"}}}
您也可以在“实验详细信息”窗格中找到“密码”。
-
点击下一步。
重要提示:您必须使用实验提供的凭据。请勿使用您的 Google Cloud 账号凭据。
注意:在本实验中使用您自己的 Google Cloud 账号可能会产生额外费用。
-
继续在后续页面中点击以完成相应操作:
- 接受条款及条件。
- 由于这是临时账号,请勿添加账号恢复选项或双重验证。
- 请勿注册免费试用。
片刻之后,系统会在此标签页中打开 Google Cloud 控制台。
注意:如需访问 Google Cloud 产品和服务,请点击导航菜单,或在搜索字段中输入服务或产品的名称。
激活 Cloud Shell
Cloud Shell 是一种装有开发者工具的虚拟机。它提供了一个永久性的 5GB 主目录,并且在 Google Cloud 上运行。Cloud Shell 提供可用于访问您的 Google Cloud 资源的命令行工具。
-
点击 Google Cloud 控制台顶部的激活 Cloud Shell
。
-
在弹出的窗口中执行以下操作:
- 继续完成 Cloud Shell 信息窗口中的设置。
- 授权 Cloud Shell 使用您的凭据进行 Google Cloud API 调用。
如果您连接成功,即表示您已通过身份验证,且项目 ID 会被设为您的 Project_ID 。输出内容中有一行说明了此会话的 Project_ID:
Your Cloud Platform project in this session is set to {{{project_0.project_id | "PROJECT_ID"}}}
gcloud
是 Google Cloud 的命令行工具。它已预先安装在 Cloud Shell 上,且支持 Tab 自动补全功能。
- (可选)您可以通过此命令列出活跃账号名称:
gcloud auth list
- 点击授权。
输出:
ACTIVE: *
ACCOUNT: {{{user_0.username | "ACCOUNT"}}}
To set the active account, run:
$ gcloud config set account `ACCOUNT`
- (可选)您可以通过此命令列出项目 ID:
gcloud config list project
输出:
[core]
project = {{{project_0.project_id | "PROJECT_ID"}}}
注意:如需查看在 Google Cloud 中使用 gcloud
的完整文档,请参阅 gcloud CLI 概览指南。
Pub/Sub 基础知识
如上文所述,Pub/Sub 是一种全球异步通讯服务。Pub/Sub 中常见的三个术语是“主题”“发布”和“订阅”。
-
主题
是一个共享字符串,可让应用通过普通会话与其他应用建立连接。
-
发布方向 Cloud Pub/Sub 主题推送(或发布
)消息。
-
订阅方会针对某个主题创建“订阅
”,以后将在主题中通过该订阅拉取消息或为推送订阅配置 webhook。每个订阅方都必须在特定的时间范围内确认每条消息。该时间范围可配置。
总而言之,生产者向某个主题发布消息,使用者针对某个主题创建订阅,以从该主题接收消息。
任务 1. Pub/Sub 主题
Pub/Sub 已预安装在 Cloud Shell 中,因此您无需安装或配置即可开始使用此服务。
- 运行以下命令创建一个名为
myTopic
的主题:
gcloud pubsub topics create myTopic
验证您已完成的任务
点击检查我的进度,验证您已完成的任务。如果您成功完成了任务,系统会给出评分。
创建 Pub/Sub 主题。
- 此外,再创建两个主题,一个名为
Test1
,另一个名为 Test2
:
gcloud pubsub topics create Test1
gcloud pubsub topics create Test2
- 要查看您刚刚创建的三个主题,请运行以下命令:
gcloud pubsub topics list
输出应类似于以下内容:
---
messageStoragePolicy:
allowedPersistenceRegions:
- us-central1
name: projects/qwiklabs-gcp-01-af5b4aaa2d32/topics/myTopic
---
messageStoragePolicy:
allowedPersistenceRegions:
- us-central1
name: projects/qwiklabs-gcp-01-af5b4aaa2d32/topics/Test1
---
messageStoragePolicy:
allowedPersistenceRegions:
- us-central1
name: projects/qwiklabs-gcp-01-af5b4aaa2d32/topics/Test2
- 现在来清除数据。运行以下命令删除
Test1
和 Test2
:
gcloud pubsub topics delete Test1
gcloud pubsub topics delete Test2
- 再次运行
gcloud pubsub topics list
命令,确认这两个主题已删除。
gcloud pubsub topics list
输出将如下所示:
---
name: projects/qwiklabs-gcp-3450558d2b043890/topics/myTopic
任务 2. Pub/Sub 订阅
现在,您已经了解如何创建、查看和删除主题,可以开始使用订阅了。
- 运行以下命令针对主题
myTopic
创建名为 mySubscription
的订阅。
gcloud pubsub subscriptions create --topic myTopic mySubscription
验证您已完成的任务
点击检查我的进度,验证您已完成的任务。如果您成功完成了任务,系统会给出评分。
创建 Pub/Sub 订阅。
- 添加另外两个针对
myTopic
的订阅。运行以下命令针对 Test1
和 Test2
创建订阅:
gcloud pubsub subscriptions create --topic myTopic Test1
gcloud pubsub subscriptions create --topic myTopic Test2
- 运行以下命令列出针对 myTopic 的订阅:
gcloud pubsub topics list-subscriptions myTopic
输出应类似于以下内容:
---
projects/qwiklabs-gcp-3450558d2b043890/subscriptions/Test2
---
projects/qwiklabs-gcp-3450558d2b043890/subscriptions/Test1
---
projects/qwiklabs-gcp-3450558d2b043890/subscriptions/mySubscription
检验您的掌握情况
下面的选择题可加强您对本实验所涉概念的理解。请尽您所能回答。
- 现在,删除
Test1
和 Test2
订阅。运行以下命令:
gcloud pubsub subscriptions delete Test1
gcloud pubsub subscriptions delete Test2
- 检查
Test1
和 Test2
订阅是否已被删除。再次运行 list-subscriptions
命令:
gcloud pubsub topics list-subscriptions myTopic
输出将如下所示:
---
projects/qwiklabs-gcp-3450558d2b043890/subscriptions/mySubscription
任务 3. 通过 Pub/Sub 发布和拉取单条消息
接下来,您将学习如何向 Pub/Sub 主题发布消息。
- 运行以下命令将消息
"hello"
发布到您之前创建的主题 (myTopic
) 中:
gcloud pubsub topics publish myTopic --message "Hello"
- 向
myTopic
再发布一些消息。运行以下命令(将 <YOUR NAME>
替换为您的姓名,将 <FOOD>
替换为您喜欢的食物):
gcloud pubsub topics publish myTopic --message "Publisher's name is <YOUR NAME>"
gcloud pubsub topics publish myTopic --message "Publisher likes to eat <FOOD>"
gcloud pubsub topics publish myTopic --message "Publisher thinks Pub/Sub is awesome"
接下来,使用 pull
命令从您的主题中拉取消息。拉取命令基于订阅运行,也就是说,该命令能够执行是因为您之前针对主题 myTopic
设置了订阅 mySubscription
。
- 使用以下命令从 Pub/Sub 主题中拉取您刚才发布的消息:
gcloud pubsub subscriptions pull mySubscription --auto-ack
输出应类似于以下内容:

出现了什么情况?您向主题发布了 4 条消息,但输出中只有 1 条消息。
现在,我们来重点了解一下常常会让开发者犯错的拉取命令 (pull
) 的几个特性:
- 即使您订阅的主题中包含多条消息,使用不带任何标志的拉取命令也只会输出一条消息。
- 当基于特定订阅的拉取命令输出某条消息后,您无法再次使用该拉取命令访问这条消息。
-
要了解第二条特性所代表的含义,请将上一个命令再运行三次。您会发现如此将输出您之前发布的其他消息。
-
现在,第 4 次运行该命令。输出将如下所示(因为已没有消息可返回):
gcpstaging20394_student@cloudshell:~ (qwiklabs-gcp-3450558d2b043890)$ gcloud pubsub subscriptions pull mySubscription --auto-ack
Listed 0 items.
在最后一部分中,您将学习如何使用标志 (flag
) 从主题中拉取多条消息。
任务 4. 通过 Pub/Sub 从订阅中拉取所有消息
由于您在上一个示例中从您的主题中拉取了所有消息,请再向 myTopic
填充一些消息。
- 运行以下命令:
gcloud pubsub topics publish myTopic --message "Publisher is starting to get the hang of Pub/Sub"
gcloud pubsub topics publish myTopic --message "Publisher wonders if all messages will be pulled"
gcloud pubsub topics publish myTopic --message "Publisher will have to test to find out"
- 在您的命令中添加一个
标志
,以便通过一次请求将三条消息全部输出。
您可能尚未注意到,但其实您一直在使用标志:拉取
命令中的 --auto-ack
就是一个标志。该标志设置了消息的格式,让拉取的消息整齐地显示在方框中。
另一个标志是 limit
,用于设置要拉取的消息的数量上限。
- 等待一段时间,以完成主题的创建。运行包含
limit
标志的拉取命令:
gcloud pubsub subscriptions pull mySubscription --limit=3
输出应如下所示:

现在,您已了解如何向 Pub/Sub 命令添加标志以输出大量消息,为成为 Pub/Sub 专家开了个好头。
恭喜!
通过本实验,您了解了关于 Pub/Sub 主题、订阅、拉取命令和标志的基础知识。
参与下一项实验
本实验是 Qwik Starts 系列实验的其中一项。通过这些实验,您可以一窥 Google Cloud 的诸多功能。请在实验目录中搜索“Qwik Starts”,找到您要参与的下一项实验!
Google Cloud 培训和认证
…可帮助您充分利用 Google Cloud 技术。我们的课程会讲解各项技能与最佳实践,可帮助您迅速上手使用并继续学习更深入的知识。我们提供从基础到高级的全方位培训,并有点播、直播和虚拟三种方式选择,让您可以按照自己的日程安排学习时间。各项认证可以帮助您核实并证明您在 Google Cloud 技术方面的技能与专业知识。
本手册的最后更新时间:2025 年 3 月 10 日
本实验的最后测试时间:2025 年 3 月 10 日
版权所有 2025 Google LLC 保留所有权利。Google 和 Google 徽标是 Google LLC 的商标。其他所有公司名和产品名可能是其各自相关公司的商标。