Bigtable サブスクリプション

Bigtable サブスクリプションを使用すると、Pub/Sub メッセージを Bigtable テーブルに書き込むことができます。このドキュメントでは、サブスクリプションのワークフロー、配信セマンティクス、エラー処理など、Bigtable サブスクリプションの概要について説明します。

Bigtable サブスクリプションを作成するには、 Bigtable サブスクリプションを作成するをご覧ください。

概要

Bigtable サブスクリプションは、メッセージの受信時に既存の Bigtable テーブルにメッセージを書き込むエクスポート サブスクリプションの一種です。エクスポート サブスクリプションを使用すると、別のサブスクライバー クライアントを構成する必要はありません。

Bigtable にメッセージを書き込む場合、メッセージに追加の 処理が必要ない場合、または 単一メッセージ変換(SMT)で処理を実行できる場合は、Bigtable サブスクリプションの 使用を検討してください。

Bigtable にメッセージを書き込む前に複雑な変換を行う必要がある場合は、pull サブスクリプションで Dataflow パイプラインを使用することをおすすめします。詳細については、 Pub/Sub から Dataflow への読み取りをご覧ください。

Pub/Sub サブスクリプション タイプの選択の詳細については、 サブスクリプション タイプを選択するをご覧ください。

Bigtable サブスクリプションのワークフロー

次の図は、Bigtable サブスクリプションと Bigtable 間のワークフローを示しています。

Bigtable サブスクリプションは Bigtable テーブルに書き込みます。

ワークフローは次の手順で構成されます。

  1. パブリッシャーは Pub/Sub トピックにメッセージを送信します。

  2. Pub/Sub はメッセージを Bigtable サブスクリプションに転送します。

  3. サブスクリプションは Bigtable に書き込みリクエストを送信します。書き込みリクエストで、サブスクリプションは 単一クラスタ ルーティングを使用するアプリ プロファイルを指定します。

  4. Bigtable は、テーブルを含む Bigtable クラスタにメッセージをルーティングします。

  5. 書き込みリクエストがテーブルにコミットされます。

  6. 書き込みオペレーションが正常に完了すると、Bigtable API は成功レスポンスを返します。

書き込みオペレーションが失敗した場合、次のように処理されます。

  1. Pub/Sub メッセージは否定応答されます。

  2. Pub/Sub はメッセージを再送信します。

  3. メッセージが十分な回数失敗し、サブスクリプションにデッドレター トピックが構成されている場合、メッセージはデッドレター トピックに移動します。

配信セマンティクス

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 の料金ページをご覧ください。

次のステップ