透過 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 會重新傳送訊息。
如果訊息多次傳送失敗,且訂閱項目已設定 dead-letter 主題,訊息就會移至 dead-letter 主題。
傳送語意
Bigtable 訂閱項目支援至少傳送一次。如果需要精確刪除重複訊息,請考慮實作下游程序,處理 Bigtable 中可能出現的重複項目,或使用 Dataflow 的精確處理一次功能。
處理傳送失敗的訊息
如果 Pub/Sub 訊息無法寫入 Bigtable,就無法確認訊息。如要轉送這類無法送達的訊息,請在 Bigtable 訂閱項目中設定 dead-letter 主題。轉送至 dead-letter 主題的 Pub/Sub 訊息包含名為 CloudPubSubDeadLetterSourceDeliveryErrorMessage 的屬性,其中含有寫入失敗的原因。
如果 Pub/Sub 無法將訊息寫入 Bigtable,Pub/Sub 會以類似推送退避行為的方式,延後傳送訊息。
配額與限制
Pub/Sub 對每個區域的 Bigtable 訂閱者總處理量設有配額限制。詳情請參閱「Pub/Sub 配額與限制」。
如要瞭解 Bigtable 限制,請參閱 Bigtable 說明文件中的「配額與限制」。
定價
如要瞭解 Bigtable 訂閱項目的定價,請參閱 Pub/Sub 定價頁面。