借助 Bigtable 订阅,您可以将 Pub/Sub 消息写入 Bigtable 表。本文档简要介绍了 Bigtable 订阅,包括订阅工作流、传送语义和错误处理。
如需创建 Bigtable 订阅,请参阅 创建 Bigtable 订阅。
概览
Bigtable 订阅是一种可在收到消息时将其写入现有 Bigtable 表的导出订阅。使用导出订阅时,您无需配置单独的订阅者客户端。
如果您想将 消息写入 Bigtable,并且消息不需要额外的 处理,或者处理可以由 单条消息转换 (SMT) 执行,请考虑使用 Bigtable 订阅。
如果您需要在将消息写入 Bigtable 之前执行更复杂的转换,我们建议您使用带有拉取订阅的 Dataflow 流水线。如需了解详情,请参阅 从 Pub/Sub 读取到 Dataflow。
如需详细了解如何选择 Pub/Sub 订阅类型, 请参阅选择订阅类型。
Bigtable 订阅工作流
下图显示了 Bigtable 订阅和 Bigtable 之间的工作流。

该工作流包含以下步骤:
发布者将消息发送到 Pub/Sub 主题。
Pub/Sub 将消息转发到 Bigtable 订阅。
订阅向 Bigtable 发送写入请求。在 写入请求中,订阅指定使用 单集群路由的应用配置文件。
Bigtable 将消息路由到包含该表的 Bigtable 集群。
写入请求已提交到该表。
写入操作成功完成后,Bigtable API 会返回成功响应。
如果写入操作失败,系统会按如下方式处理:
Pub/Sub 消息会被否定确认。
Pub/Sub 会重新发送消息。
如果消息失败的次数足够多,并且订阅中配置了死信主题,则消息会被移至死信主题。
传送语义
Bigtable 订阅支持“至少一次”传送。 如果您 需要对消息进行精确去重,请考虑实现下游 流程来处理 Bigtable 中潜在的重复项,或者使用 Dataflow's “正好一次”处理功能。
处理消息故障
如果 Pub/Sub 消息无法写入 Bigtable,则无法确认该消息。如需转发此类无法递送的消息,
请在
Bigtable 订阅中配置死信主题。转发到死信主题的 Pub/Sub 消息包含一个名为 CloudPubSubDeadLetterSourceDeliveryErrorMessage 的属性,其中包含写入失败的原因。
如果 Pub/Sub 无法将消息写入 Bigtable,则 Pub/Sub 会以类似于 推送退避行为的方式退避消息传送。
配额和限制
Pub/Sub 对每个区域的 Bigtable 订阅者吞吐量有配额限制。如需了解详情,请参阅 Pub/Sub 配额和限制。
如需了解 Bigtable 限制,请参阅 Bigtable 文档中的配额和限制。
价格
如需了解 Bigtable 订阅的价格,请参阅 Pub/Sub 价格页面。