Bigtable サブスクリプションを使用すると、Pub/Sub メッセージを Bigtable テーブルに書き込むことができます。このドキュメントでは、サブスクリプションのワークフロー、配信セマンティクス、エラー処理など、Bigtable サブスクリプションの概要について説明します。
Bigtable サブスクリプションを作成するには、 Bigtable サブスクリプションを作成するをご覧ください。
概要
Bigtable サブスクリプションは、メッセージの受信時に既存の Bigtable テーブルにメッセージを書き込むエクスポート サブスクリプションの一種です。エクスポート サブスクリプションを使用すると、別のサブスクライバー クライアントを構成する必要はありません。
Bigtable にメッセージを書き込む場合、メッセージに追加の 処理が必要ない場合、または 単一メッセージ変換(SMT)で処理を実行できる場合は、Bigtable サブスクリプションの 使用を検討してください。
Bigtable にメッセージを書き込む前に複雑な変換を行う必要がある場合は、pull サブスクリプションで Dataflow パイプラインを使用することをおすすめします。詳細については、 Pub/Sub から Dataflow への読み取りをご覧ください。
Pub/Sub サブスクリプション タイプの選択の詳細については、 サブスクリプション タイプを選択するをご覧ください。
Bigtable サブスクリプションのワークフロー
次の図は、Bigtable サブスクリプションと Bigtable 間のワークフローを示しています。

ワークフローは次の手順で構成されます。
パブリッシャーは Pub/Sub トピックにメッセージを送信します。
Pub/Sub はメッセージを Bigtable サブスクリプションに転送します。
サブスクリプションは Bigtable に書き込みリクエストを送信します。書き込みリクエストで、サブスクリプションは 単一クラスタ ルーティングを使用するアプリ プロファイルを指定します。
Bigtable は、テーブルを含む Bigtable クラスタにメッセージをルーティングします。
書き込みリクエストがテーブルにコミットされます。
書き込みオペレーションが正常に完了すると、Bigtable API は成功レスポンスを返します。
書き込みオペレーションが失敗した場合、次のように処理されます。
Pub/Sub メッセージは否定応答されます。
Pub/Sub はメッセージを再送信します。
メッセージが十分な回数失敗し、サブスクリプションにデッドレター トピックが構成されている場合、メッセージはデッドレター トピックに移動します。
配信セマンティクス
Bigtable サブスクリプションは、少なくとも 1 回の配信をサポートしています。 メッセージの正確な重複除去が必要な場合は、Bigtable で重複する可能性のあるメッセージを処理するダウンストリーム プロセスを実装するか、Dataflow の exactly-once processing 処理機能を使用することを検討してください。
メッセージ エラーの処理
Pub/Sub メッセージを Bigtable に書き込めない場合、メッセージを確認応答できません。このような配信不能メッセージを転送するには、
Bigtable サブスクリプションで
デッドレター トピックを構成します。デッドレター トピックに転送された Pub/Sub メッセージには、書き込み失敗の理由を示す
CloudPubSubDeadLetterSourceDeliveryErrorMessage という名前の属性が含まれています。
Pub/Sub が Bigtable にメッセージを書き込めない場合、 Pub/Sub は push バックオフ動作と同様の方法でメッセージの配信をバックオフします。
割り当てと上限
Pub/Sub のリージョンごとの Bigtable サブスクライバーのスループットには割り当て上限があります。詳細については、 Pub/Sub の割り当てと上限をご覧ください。
Bigtable の上限については、Bigtable ドキュメントの 割り当てと上限をご覧ください。
料金
Bigtable サブスクリプションの料金については、 Pub/Sub の料金ページをご覧ください。