Usa Cloud Pub/Sub Seek con Cloud Dataflow

Con Pub/Sub Seek, los usuarios pueden volver a reproducir y procesar los mensajes de los que confirmaron recepción previamente, y también pueden confirmar recepción de mensajes en forma masiva. Sin embargo, no recomendamos el acceso directo a Pub/Sub Seek desde una canalización de Dataflow en ejecución. El acceso directo invalida la lógica de la marca de agua de Dataflow y no funciona bien con el procesamiento del tipo “exactamente una vez”. Además, el acceso directo entra en conflicto con el estado de una canalización que incorpora datos procesados.

Recomendamos usar Pub/Sub Seek con el siguiente flujo de trabajo:

  1. Haz una instantánea de la suscripción.
  2. Desvía los mensajes de la suscripción en Dataflow.
  3. Reinicia la canalización.

Crea una instantánea

La búsqueda y el nuevo procesamiento se hacen a partir de una instantánea de suscripción. Para crear esta instantánea con la herramienta de línea de comandos de gcloud, ejecuta los siguientes comandos:

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

Para verificar que creaste la instantánea, ejecuta el siguiente comando:

pubsub snapshots list

Desvía la suscripción

Para desviar la suscripción y reiniciar la canalización, sigue estos pasos:

  1. Navega a la consola de Dataflow y haz clic en tu canalización de transmisión.
  2. En el panel Resumen, haz clic en Detener trabajo.
  3. Selecciona Desviar para permitir el procesamiento de mensajes en tránsito y espera a que se finalice el trabajo.
  4. Usa la herramienta de línea de comandos de gcloud para buscar la instantánea en tu suscripción:
    pubsub subscriptions seek seek-demo-sub --snapshot=my-snapshot
    
  5. Reinicia tu canalización de Dataflow.