检查点
Create a Pub/Sub topic
/ 5
Create Pub/Sub Subscription
/ 5
Pub/Sub:Qwik Start - 命令行
GSP095
概览
Pub/Sub 是一种用于在应用和服务之间交换事件数据的通讯服务。通过分离发送者和接收者,该服务支持在独立编写的应用之间安全地进行通信并且保证高可用性。Pub/Sub 提供延迟低且持久的通讯功能,开发者常使用该服务实现异步工作流,分发事件通知,以及流式传输来自各种进程或设备的数据。
学习内容
在此实验中,您将:
- 创建、删除和列出 Pub/Sub 主题和订阅
- 向主题发布消息
- 学习如何使用拉取订阅方
前提条件
本实验是入门级实验。我们预设您缺少 Pub/Sub 相关经验,将会向您介绍关于设置和使用此 Google Cloud 服务的基础知识。
设置和要求
点击“开始实验”按钮前的注意事项
请阅读以下说明。实验是计时的,并且您无法暂停实验。计时器在您点击开始实验后即开始计时,显示 Google Cloud 资源可供您使用多长时间。
此实操实验可让您在真实的云环境中开展实验活动,免受模拟或演示环境的局限。我们会为您提供新的临时凭据,让您可以在实验规定的时间内用来登录和访问 Google Cloud。
为完成此实验,您需要:
- 能够使用标准的互联网浏览器(建议使用 Chrome 浏览器)。
- 完成实验的时间 - 请注意,实验开始后无法暂停。
如何开始实验并登录 Google Cloud 控制台
-
点击开始实验按钮。如果该实验需要付费,系统会打开一个弹出式窗口供您选择付款方式。左侧是实验详细信息面板,其中包含以下各项:
- 打开 Google Cloud 控制台按钮
- 剩余时间
- 进行该实验时必须使用的临时凭据
- 帮助您逐步完成本实验所需的其他信息(如果需要)
-
点击打开 Google Cloud 控制台(如果您使用的是 Chrome 浏览器,请右键点击并选择在无痕式窗口中打开链接)。
该实验会启动资源并打开另一个标签页,显示登录页面。
提示:请将这些标签页安排在不同的窗口中,并将它们并排显示。
注意:如果您看见选择账号对话框,请点击使用其他账号。 -
如有必要,请复制下方的用户名,然后将其粘贴到登录对话框中。
{{{user_0.username | "<用户名>"}}} 您也可以在实验详细信息面板中找到用户名。
-
点击下一步。
-
复制下面的密码,然后将其粘贴到欢迎对话框中。
{{{user_0.password | "<密码>"}}} 您也可以在实验详细信息面板中找到密码。
-
点击下一步。
重要提示:您必须使用实验提供的凭据。请勿使用您的 Google Cloud 账号凭据。 注意:在本次实验中使用您自己的 Google Cloud 账号可能会产生额外费用。 -
继续在后续页面中点击以完成相应操作:
- 接受条款及条件。
- 由于该账号为临时账号,请勿添加账号恢复选项或双重验证。
- 请勿注册免费试用。
片刻之后,系统会在此标签页中打开 Google Cloud 控制台。
激活 Cloud Shell
Cloud Shell 是一种装有开发者工具的虚拟机。它提供了一个永久性的 5GB 主目录,并且在 Google Cloud 上运行。Cloud Shell 提供可用于访问您的 Google Cloud 资源的命令行工具。
- 点击 Google Cloud 控制台顶部的激活 Cloud Shell 。
如果您连接成功,即表示您已通过身份验证,且当前项目会被设为您的 PROJECT_ID 环境变量所指的项目。输出内容中有一行说明了此会话的 PROJECT_ID:
gcloud
是 Google Cloud 的命令行工具。它已预先安装在 Cloud Shell 上,且支持 Tab 自动补全功能。
- (可选)您可以通过此命令列出活跃账号名称:
-
点击授权。
-
现在,输出的内容应如下所示:
输出:
- (可选)您可以通过此命令列出项目 ID:
输出:
输出示例:
gcloud
, in Google Cloud, refer to the gcloud CLI overview guide.
Pub/Sub 基础知识
如上文所述,Pub/Sub 是一种全球异步通讯服务。Pub/Sub 中常见的三个术语是“主题”“发布”和“订阅”。
-
主题
是一个共享字符串,可让应用通过普通会话与其他应用建立连接。 -
发布方向 Cloud Pub/Sub 主题推送(或
发布
)消息。 -
订阅方会针对某个主题创建“
订阅
”,以后将在主题中通过该订阅拉取消息或为推送订阅配置 webhook。每个订阅方都必须在特定的时间范围内确认每条消息。该时间范围可配置。
总而言之,生产者向某个主题发布消息,使用者针对某个主题创建订阅,以从该主题接收消息。
任务 1. Pub/Sub 主题
Pub/Sub 已预安装在 Cloud Shell 中,因此您无需安装或配置即可开始使用此服务。
- 运行以下命令创建一个名为
myTopic
的主题:
验证您已完成的任务
点击检查我的进度可验证您已完成的任务。如果您成功完成了任务,系统会给出评分。
- 此外,再创建两个主题,一个名为
Test1
,另一个名为Test2
:
- 要查看您刚刚创建的三个主题,请运行以下命令:
输出应类似于以下内容:
- 现在来清除数据。运行以下命令删除
Test1
和Test2
:
- 再次运行
gcloud pubsub topics list
命令,确认这两个主题已删除。
输出将如下所示:
任务 2. Pub/Sub 订阅
现在,您已经了解如何创建、查看和删除主题,可以开始使用订阅了。
- 运行以下命令针对主题
myTopic
创建名为mySubscription
的订阅。
验证您已完成的任务
点击检查我的进度可验证您已完成的任务。如果您成功完成了任务,系统会给出评分。
- 添加另外两个针对
myTopic
的订阅。运行以下命令针对Test1
和Test2
创建订阅:
- 运行以下命令列出针对 myTopic 的订阅:
输出应类似于以下内容:
检验您的掌握情况
下面的选择题可加强您对本实验所涉概念的理解。请尽您所能回答。
- 现在,删除
Test1
和Test2
订阅。运行以下命令:
- 检查
Test1
和Test2
订阅是否已被删除。再次运行list-subscriptions
命令:
输出将如下所示:
任务 3. 通过 Pub/Sub 发布和拉取单条消息
接下来,您将学习如何向 Pub/Sub 主题发布消息。
- 运行以下命令将消息
"hello"
发布到您之前创建的主题 (myTopic
) 中:
- 向
myTopic
再发布一些消息。运行以下命令(将<YOUR NAME>
替换为您的姓名,将<FOOD>
替换为您喜欢的食物):
接下来,使用 pull
命令从您的主题中拉取消息。拉取命令基于订阅运行,也就是说,该命令能够执行是因为您之前针对主题 myTopic
设置了订阅 mySubscription
。
- 使用以下命令从 Pub/Sub 主题中拉取您刚才发布的消息:
输出应类似于以下内容:
出现了什么情况?您向主题发布了 4 条消息,但输出中只有 1 条消息。
现在,我们来重点了解一下常常会让开发者犯错的拉取命令 (pull
) 的几个特性:
- 即使您订阅的主题中包含多条消息,使用不带任何标志的拉取命令也只会输出一条消息。
- 当基于特定订阅的拉取命令输出某条消息后,您无法再次使用该拉取命令访问这条消息。
-
要了解第二条特性所代表的含义,请将上一个命令再运行三次。您会发现如此将输出您之前发布的其他消息。
-
现在,第 4 次运行该命令。输出将如下所示(因为已没有消息可返回):
在最后一部分中,您将学习如何使用标志 (flag
) 从主题中拉取多条消息。
任务 4. 通过 Pub/Sub 从订阅中拉取所有消息
由于您在上一个示例中从您的主题中拉取了所有消息,请再向 myTopic
填充一些消息。
- 运行以下命令:
- 在您的命令中添加一个
标志
,以便通过一次请求将三条消息全部输出。
您可能尚未注意到,但其实您一直在使用标志:拉取
命令中的 --auto-ack
就是一个标志。该标志设置了消息的格式,让拉取的消息整齐地显示在方框中。
另一个标志是 limit
,用于设置要拉取的消息的数量上限。
- 等待一段时间,以完成主题的创建。运行包含
limit
标志的拉取命令:
输出应如下所示:
现在,您已了解如何向 Pub/Sub 命令添加标志以输出大量消息,为成为 Pub/Sub 专家开了个好头。
恭喜!
通过本实验,您了解了关于 Pub/Sub 主题、订阅、拉取命令和标志的基础知识。
参与下一项实验
本实验是 Qwik Starts 系列实验的其中一项。通过这些实验,您可以一窥 Google Cloud 的诸多功能。请在实验目录中搜索“Qwik Starts”,找到您要参与的下一项实验!
Google Cloud 培训和认证
…可帮助您充分利用 Google Cloud 技术。我们的课程会讲解各项技能与最佳实践,可帮助您迅速上手使用并继续学习更深入的知识。我们提供从基础到高级的全方位培训,并有点播、直播和虚拟三种方式选择,让您可以按照自己的日程安排学习时间。各项认证可以帮助您核实并证明您在 Google Cloud 技术方面的技能与专业知识。
上次更新手册的时间:2024 年 2 月 13 日
上次测试实验的时间:2023 年 5 月 25 日
版权所有 2024 Google LLC 保留所有权利。Google 和 Google 徽标是 Google LLC 的商标。其他所有公司名和产品名可能是其各自相关公司的商标。