Utiliser la fonctionnalité Seek de Pub/Sub avec Dataflow

La fonctionnalité Seek de Pub/Sub permet aux utilisateurs de revoir et retraiter des messages déjà confirmés ou de les traiter de manière groupée. Nous vous déconseillons toutefois d'accéder directement à la fonctionnalité de recherche de Pub/Sub depuis un pipeline Dataflow en cours d'exécution. L'accès direct invalide la logique de filigrane de Dataflow et ne fonctionne pas bien avec le traitement "exactement une fois". Il crée également des conflits au niveau de l'état des pipelines qui intègrent les données traitées.

Nous vous recommandons d'appliquer le workflow suivant lorsque vous utilisez la fonctionnalité Seek de Pub/Sub :

  1. Créez un instantané de l'abonnement.
  2. Drainez les messages d'abonnement dans Dataflow.
  3. Renvoyez le pipeline.

Créer un instantané

Vous allez rechercher et répéter une étape de traitement à partir d'un instantané d'abonnement. Pour créer cet instantané à l'aide de l'outil de ligne de commande gcloud, exécutez les commandes suivantes :

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

Pour vérifier que l'instantané a bien été créé, exécutez la commande suivante :

pubsub snapshots list

Drainer l'abonnement

Pour drainer l'abonnement et renvoyer le pipeline, procédez comme suit :

  1. Accédez à la console Dataflow, puis cliquez sur votre pipeline de traitement par flux.
  2. Dans le volet Résumé, cliquez sur Arrêter la tâche.
  3. Sélectionnez Drainer pour traiter les messages en cours de transfert et attendez que la tâche se termine.
  4. Recherchez votre abonnement à l'instantané à l'aide de l'outil de ligne de commande gcloud :
    pubsub subscriptions seek seek-demo-sub --snapshot=my-snapshot
    
  5. Renvoyez votre pipeline Dataflow.