发布消息概览

如需使用 Pub/Sub 发布消息,发布者应用需要创建消息并将其发送到主题。

本文档简要介绍了发布工作流,包括主题和消息的概念。

主题简介

Pub/Sub 主题是代表消息信息流的命名资源。发布者发送消息时,会指定目标主题。Pub/Sub 服务使用此主题名称将消息路由到附加到该主题的所有订阅。如果某个订阅有多个订阅者,则只有该订阅中的一个订阅者会收到消息。

发布者不必知道有多少订阅者。它们侧重于主题,确保消息发送和消息接收之间的关注点分离。

Pub/Sub 支持两种主题:标准主题和导入主题。

主题的属性

创建或更新主题时,您可以指定主题属性。

如需详细了解主题属性,请参阅主题的属性

导入主题简介

借助导入主题,Pub/Sub 可以从其他来源注入流式数据,并充当将数据发送到主题的发布者应用。您可以使用控制台、Google Cloud CLI、REST 调用或客户端库在主题上启用提取。作为管理导入主题的一部分,Trusted Cloud by S3NS 提供提取流水线的监控和伸缩功能。

如果没有导入主题,则需要使用其他服务才能将数据从数据源流式传输到 Pub/Sub。此附加服务会从原始来源拉取数据,并将其发布到 Pub/Sub。其他服务可以是 Apache Spark 等流式传输引擎,也可以是自定义编写的服务。您还必须配置、部署、运行、扩缩和监控此服务。

以下是有关导入主题的重要信息列表:

  • 与标准主题类似,您仍然可以手动发布到导入主题。

  • 您只能将一个提取源附加到导入主题。

建议为流式数据导入主题。如果您考虑将批量数据注入到 BigQuery 中,而不是注入流式数据,可以尝试使用 BigQuery Data Transfer Service。如果您想将数据注入到 Cloud Storage,Storage Transfer Service (STS) 是一个不错的选择。

Pub/Sub 支持以下导入主题的来源:

主题中的数据复制

Pub/Sub 主题使用三个可用区来存储数据。该服务支持同步复制到至少两个可用区,并尽力复制到第三个可用区。Pub/Sub 复制仅在一个区域内进行。

消息简介

Pub/Sub 消息是通过服务移动的数据。

消息由包含消息数据和元数据的字段组成。必须在消息中指定以下内容之一。

  • 消息数据:这是消息的核心内容,可以是任何文本或二进制数据。它表示您希望在发布者和订阅者之间传递的实际信息。如果您直接使用 REST API,则消息数据必须采用 base64 编码。请参阅发布消息部分中 REST 标签页内的示例。

  • 排序键:这是一个标识符,表示必须按顺序传送消息的实体。具有相同排序键的消息应按发布顺序传送给订阅者。只有在您希望按顺序传送消息时,才需要排序键。如需详细了解订购密钥,请参阅订单消息

  • 属性:这些是可选的键值对,用于提供有关消息的其他背景信息和信息。它们可用于路由、过滤或丰富消息内容。例如,您可以添加时间戳或交易 ID 等属性。如需详细了解发布消息时使用的属性,请参阅使用属性发布消息

Pub/Sub 服务将以下字段添加到消息中:

  • 主题专属的消息 ID
  • Pub/Sub 服务接收消息的时间的时间戳

例如,以下是 JSON 格式的消息

{
  "data": "This is the core message content.",
  "attributes": {
    "category": "notification",
    "user_id": "12345",
    "priority": "medium"
  },
    "orderingKey": "12345"
}

使用 Pub/Sub 客户端库发布消息时,请以字节数组(例如 Node.js Buffer)的形式提供消息 data。如果您的数据是字符串,您必须先将其编码为字节(例如使用 UTF-8 编码),然后再将其传递给客户端库。

如果您直接使用 REST API,则消息数据必须采用 base64 编码并以字符串形式发送。

发布消息工作流

如需使用 Pub/Sub 发布消息,发布者应用会创建消息,然后将其发送到主题

  1. 创建一条包含您的数据的消息。
  2. 选择任何可选的发布属性。
  3. 向 Pub/Sub 服务器发送请求,以将消息发布到指定主题。
  4. Pub/Sub 服务接收消息并按如下方式处理:

    • 消息已存储以供分发。

    • 消息会跨多个可用区进行复制,以实现持久性和高可用性。

    • Pub/Sub 会识别出订阅与消息主题匹配的订阅者,并将消息副本传送给每个订阅者。

Pub/Sub 会为现有订阅者提供“至少一次”消息传送及尽力排序功能。

如需详细了解 Pub/Sub 系统,请参阅 Pub/Sub 服务概览

如需详细了解 Pub/Sub 的工作原理,请参阅 Pub/Sub 的架构概览

后续步骤

Apache Kafka® 是 Apache Software Foundation 或其关联公司在美国和/或其他国家/地区的注册商标。