Dataflow で Pub/Sub のシークを使用する

Pub/Sub Seek を使用すると、確認済みのメッセージを再生して再処理することや、メッセージをまとめて確認することが可能になります。しかし、稼働中の Dataflow パイプラインから Pub/Sub Seek に直接アクセスすることはおすすめしません。直接アクセスは Dataflow のウォーターマーク ロジックを無効にするため、1 回限りの処理ではうまく機能しません。さらに直接アクセスは、処理済みデータを組み込んだパイプラインの状態と競合します。

次のワークフローで Cloud Pub/Sub Seek を使用することをおすすめします。

  1. サブスクリプションのスナップショットを作成します。
  2. Dataflow 内のサブスクリプション メッセージをドレインします。
  3. パイプラインを再送信します。

スナップショットの作成

あるサブスクリプション スナップショットまでシークして処理をやり直します。gcloud コマンドライン ツールを使用してこのスナップショットを作成するには、次のコマンドを実行します。

alias pubsub='gcloud pubsub'
pubsub snapshots create my-snapshot --subscription=seek-demo-sub

スナップショットが作成されたことを確認するには、次のコマンドを実行します。

pubsub snapshots list

サブスクリプションをドレインする

サブスクリプションをドレインしてパイプラインを再送信する手順は、次のとおりです。

  1. Dataflow コンソールに移動してストリーミング パイプラインをクリックします。
  2. [概要] ペインで、[ジョブを中止] をクリックします。
  3. [ドレイン] を選択して処理中のメッセージを処理できるようにし、ジョブが終了するまで待ちます。
  4. gcloud コマンドライン ツールを使用して、スナップショットまでサブスクリプションをシークします。
    pubsub subscriptions seek seek-demo-sub --snapshot=my-snapshot
    
  5. Dataflow パイプラインを再送信します。