解锁 Google Cloud Pub/Sub 的强大功能

Google Cloud Pub/Sub 是一种可扩展的消息传递服务,用于在分布式系统中实现异步通信。它允许发布者向特定主题发送消息,而订阅者可以从这些主题接收消息。这种解耦的架构使得系统更加灵活和可扩展。

Pub/Sub 的主要特点

  • 异步通信:发布者无需等待订阅者确认即可发送消息。
  • 可靠性:确保每条消息至少被送达一次,可能会有重复。
  • 可扩展性:支持大规模、高吞吐量的消息传递。
  • 实时性 :消息延迟通常在100毫秒以内126

Pub/Sub 的应用场景

  • 实时数据处理:适用于实时分析用户行为或 IoT 设备数据。
  • 微服务架构:用于服务间的解耦和异步通信。
  • 事件驱动系统 :如用户注册、订单创建等事件的通知8

教程:使用 Pub/Sub 发布和接收消息

步骤 1:设置 Google Cloud 项目

  1. 创建项目:在 Google Cloud Console 中创建一个新项目。
  2. 启用 Pub/Sub API:在项目中启用 Google Cloud Pub/Sub API。

步骤 2:创建主题和订阅

  1. 创建主题 :在 Pub/Sub 中创建一个主题(例如 my_topic)。
  2. 创建订阅 :为该主题创建一个订阅(例如 my_subscription)。

步骤 3:发布消息

使用 gcloud 命令行工具发布消息到主题:

arduino 复制代码
bash
gcloud pubsub topics publish my_topic --message "Hello, Pub/Sub!"

步骤 4:接收消息

使用 gcloud 命令行工具从订阅中拉取消息:

arduino 复制代码
bash
gcloud pubsub subscriptions pull --auto-ack my_subscription

步骤 5:使用客户端库

也可以使用客户端库(如 Python)来发布和接收消息:

ini 复制代码
python
from google.cloud import pubsub_v1

# 发布消息
publisher = pubsub_v1.PublisherClient()
topic_path = publisher.topic_path('your_project', 'my_topic')
data = 'Hello, Pub/Sub!'.encode('utf-8')
publisher.publish(topic_path, data)

# 接收消息
subscriber = pubsub_v1.SubscriberClient()
subscription_path = subscriber.subscription_path('your_project', 'my_subscription')
response = subscriber.pull(subscription_path, max_messages=10)

for message in response.received_messages:
    print(message.message.data.decode('utf-8'))
    subscriber.ack(subscription_path, [message.ack_id])

步骤 6:配置推送消费者(可选)

如果需要将消息推送到特定 URL,可以配置推送消费者:

  1. 创建推送订阅:在 Pub/Sub 中创建一个推送类型的订阅。
  2. 配置终端 URL:设置消息推送到的 URL。

示例案例

实时数据分析:使用 Pub/Sub 从 IoT 设备收集数据,并实时分析用户行为。

  • 步骤

    1. IoT 设备向 Pub/Sub 主题发送数据。
    2. Dataflow 或 Cloud Function 从 Pub/Sub 订阅中接收数据。
    3. 数据被处理并存储到 BigQuery 中。

微服务架构:在微服务之间使用 Pub/Sub 进行解耦。

  • 步骤

    1. 服务 A 向 Pub/Sub 主题发送请求。
    2. 服务 B 从 Pub/Sub 订阅中接收请求并处理。
    3. 处理结果被返回给服务 A。

通过这些步骤,你可以利用 Pub/Sub 实现异步消息传递,提高系统的可扩展性和可靠性。

相关推荐
沉默王二19 分钟前
腾讯一面,我霸气反问:“你说你们在做Agent项目,说说 SubAgent、Plan 模式、Skill 调用这些你们都是怎么做的?”面试官一直在擦汗。。
面试·agent·ai编程
IT_陈寒39 分钟前
Vue这个特性差点让我加班到凌晨,谁懂啊
前端·人工智能·后端
段一凡-华北理工大学44 分钟前
向量数据库实战:选型、调优与落地~系列文章12:文本分块策略实战:chunk_size 怎么选?重叠多少?
开发语言·数据库·后端·oracle·rust·工业智能体·高炉智能化
码事漫谈1 小时前
1999年的电商前夜和2026年的AI前夜 历史押韵但从不重复
后端
Conan在掘金2 小时前
鸿蒙报错速查:arkts-strict-typing Property does not exist on type 'object',object 装函数就炸,根因 + 真解法
后端
颜酱2 小时前
01 | 骨架搭建:FastAPI + Vue 跑通第一个 SSE 流式问答
前端·人工智能·后端
程序员cxuan3 小时前
Grok Build 被众人唾骂,结果老马把它开源了
人工智能·后端·程序员
从零开始的代码生活_3 小时前
C++ 继承详解:访问控制、对象模型、菱形继承与设计取舍
开发语言·c++·后端·学习·算法
Conan在掘金3 小时前
�鸿蒙报错速查:Cannot find name 'require',禁用 require(),根因 + 真解法
后端
隔窗听雨眠3 小时前
Spring Boot在云原生时代的编程范式革新研究
spring boot·后端·云原生