订阅概览

要接收发布到某个主题的消息,您必须创建对该主题的订阅 主题。仅限创建订阅后发布到主题的消息 可供订阅者客户端使用订阅方客户端接收并 处理发布到主题的消息。一个主题可以有多个订阅,但一个给定订阅属于单个主题。

借助主题保留功能,附加到某个主题的订阅可以回溯并重放之前发布的消息。您可以参阅重放和完全清除消息主题,详细了解此功能。

订阅工作流

  1. 在消息发送至订户后,订户必须确认 消息。

  2. 如果消息已发出进行传送且订阅者尚未确认 那么该消息就称为未完成

  3. Pub/Sub 会反复尝试传送 尚未确认。不过,Pub/Sub 会尝试不将未处理完的消息传送给同一订阅的任何其他订阅者。

  4. 订阅者可以配置有限的时间,这称为 ackDeadline,用于确认未完成的消息。该时限过后,该消息不再被视为未完成,Pub/Sub 会尝试重新传送该消息。

订阅类型

创建订阅时,您必须指定消息传送类型。Pub/Sub 提供以下类型的订阅:

  • 拉取订阅使用订阅者客户端从以下位置请求消息: Pub/Sub 服务器

  • 推送订阅使用 Pub/Sub 服务器向订阅者应用发起请求来传送消息。

  • 导出订阅可帮助您将邮件直接导出到 Google Cloud 资源。这些订阅包括:

    • BigQuery 订阅会将数据导出到 BigQuery 表。

    • Cloud Storage 订阅会将数据导出到 Cloud Storage 存储桶。

如需根据业务需求选择正确的订阅,请参阅 选择订阅类型。您可以更新 消息传送类型 创建订单项

默认订阅属性

默认情况下,Pub/Sub 提供“至少一次”传送, 适用于所有订阅类型的排序保证。另外,如果邮件包含 同一排序键且位于同一区域,那么您可以启用消息 排序。设置消息排序属性后,Pub/Sub 服务会按照接收消息的顺序来传送带有相同排序键的消息。

Pub/Sub 还支持仅传送一次

一般情况下,Pub/Sub 会将每条消息按顺序传送一次, 以及它的发布日期但有时可能并不按顺序传送消息,或者会将消息传送多次。即使消息的确认请求成功返回,Pub/Sub 也可能会重新传送消息。这个 服务器端重启或客户端 问题。因此,尽管这种情况很少见,但任何消息都可以随时重新提交。

如果要实施多次传送,订阅者需要在处理消息时遵循幂等原则

订阅到期

默认情况下,订阅会在订阅者无活动 31 天后到期,或者, 订阅没有更新。订阅者活动示例 包括打开连接、主动拉取或成功推送。如果 Pub/Sub 检测到订阅者活动或订阅属性更新,则订阅删除时钟会重启。使用 订阅到期政策, 您可以配置非活跃时长,也可以将订阅设为永久 都没有影响您还可以 手动删除订阅。

虽然您可以创建与已删除的订阅同名的新订阅, 新订阅与旧订阅没有任何关系。即使删除 订阅有许多未确认的消息,使用 相同名称的 状态

后续步骤