Busca una instantánea o una marca de tiempo para volver a reproducir un mensaje en Pub/Sub
Pub/Sub no puede recuperar los mensajes después de que los confirmas. Sin embargo, a veces es posible que debas volver a reproducir los mensajes confirmados, por ejemplo, si realizaste un mensaje de confirmación erróneo. Luego, puedes usar la función Buscar para marcar los mensajes confirmados anteriormente como no confirmados y forzar a Pub/Sub a volver a entregarlos. También puedes usar el salto para borrar los mensajes no confirmados cambiando su estado a confirmado.
Busca una instantánea o una marca de tiempo para volver a reproducir los mensajes de una suscripción. En esta guía, se muestran ejemplos de cómo volver a reproducir los mensajes de Pub/Sub confirmados anteriormente con el salto.
Para seguir la guía paso a paso en esta tarea directamente en la consola de Google Cloud, haz clic en Guiarme:
Antes de comenzar
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
Set up a Google Cloud console project.
Click to:
- Create or select a project.
- Enable the Pub/Sub API for that project.
You can view and manage these resources at any time in the Google Cloud console.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
Set up a Google Cloud console project.
Click to:
- Create or select a project.
- Enable the Pub/Sub API for that project.
You can view and manage these resources at any time in the Google Cloud console.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
Usa la interfaz de línea de comandos de gcloud
La forma más fácil de usar gcloud es en Cloud Shell. También puedes usar la herramienta de línea de comandos que viene con Google Cloud CLI. Los requisitos previos de configuración de gcloud CLI se cumplen automáticamente si creas una instancia de máquina de Compute Engine nueva con niveles de acceso que incluyan todas las API de Cloud y la imagen predeterminada de Debian. La forma más sencilla de crearla es mediante la IU de Compute Engine. Para el resto de este documento, suponemos que usas una de estas herramientas de línea de comandos.
Para obtener más información sobre el uso de gcloud, consulta la guía de inicio rápido de gcloud.
Consulta también la sección de pubsub de gcloud en la referencia de gcloud para obtener una lista completa de comandos de gcloud
de Pub/Sub.
Crea y busca instantáneas
Crea un tema y una suscripción. Para una mejor interactividad, usa un plazo de confirmación de recepción breve:
gcloud pubsub topics create seek-demo-topic gcloud pubsub subscriptions create seek-demo-sub --topic=seek-demo-topic --ack-deadline=10
Hasta ahora no se confirmó ningún mensaje en la suscripción. Captura este estado mediante la creación de una instantánea:
gcloud pubsub snapshots create my-snapshot --subscription=seek-demo-sub gcloud pubsub snapshots list
Ahora publica, extrae y confirma un mensaje:
gcloud pubsub topics publish seek-demo-topic --message 'hello, world' gcloud pubsub subscriptions pull --auto-ack seek-demo-sub
Ten en cuenta que las extracciones posteriores no generan mensajes nuevos (es posible que se produzcan algunos duplicados transitorios):
gcloud pubsub subscriptions pull --auto-ack seek-demo-sub
Para recuperar el mensaje, busca la suscripción a la instantánea. Ten en cuenta que es posible que el mensaje no se entregue de inmediato: Pub/Sub no garantiza la latencia de entrega de mensajes. Sin embargo, lo que sí garantiza es que los mensajes retenidos en la instantánea se entregarán al menos una vez:
gcloud pubsub subscriptions seek seek-demo-sub --snapshot=my-snapshot gcloud pubsub subscriptions pull seek-demo-sub --auto-ack
Ten en cuenta que puedes buscar otras suscripciones a la misma instantánea, siempre que el tema de la suscripción sea el mismo que el de la instantánea:
gcloud pubsub subscriptions create seek-demo-sub2 --topic=seek-demo-topic --ack-deadline=10 gcloud pubsub subscriptions seek seek-demo-sub2 --snapshot=my-snapshot
Cuando realizas una extracción desde seek-demo-sub2
, se mostrarán los mensajes que se publicaron antes de que se creara seek-demo-sub2
:
gcloud pubsub subscriptions pull seek-demo-sub2 --auto-ack
Cuando hayas terminado de usar la instantánea, realiza una limpieza:
gcloud pubsub snapshots delete my-snapshot
Busca una marca de tiempo
Otra forma de volver a reproducir mensajes confirmados es buscar una marca de tiempo. Para buscar una marca de tiempo, primero debes configurar la suscripción con retain-acked-messages
a fin de que retenga los mensajes confirmados. Si se configura retain-acked-messages
, Pub/Sub retiene los mensajes confirmados por 7 días.
Solo debes realizar este paso si deseas buscar una marca de tiempo, no una instantánea.
gcloud pubsub subscriptions update seek-demo-sub --retain-acked-messages
Ahora publica, extrae y confirma un mensaje:
gcloud pubsub topics publish seek-demo-topic --message 'hello, world' gcloud pubsub subscriptions pull --auto-ack seek-demo-sub
Con la siguiente extracción, no debería aparecer ningún mensaje:
gcloud pubsub subscriptions pull seek-demo-sub
Ahora busca la suscripción según la fecha para recuperar el mensaje. Ten en cuenta que las marcas aritméticas de fecha difieren entre las versiones GNU y BSD (MacOS) del comando de fecha:
export TS_FORMAT=%Y-%m-%dT%H:%M:%SZ gcloud pubsub subscriptions seek seek-demo-sub --time=$(date -u -d '-10 min' +$TS_FORMAT)
Para obtener más información sobre los formatos de hora compatibles, consulta gcloud topic datetimes.
Una extracción posterior debería volver a generar el mensaje:
gcloud pubsub subscriptions pull --auto-ack seek-demo-sub
También puedes usar la función de búsqueda para omitir la entrega de todos los mensajes publicados antes de un momento determinado, como la hora actual. Para hacerlo, busca la suscripción a la hora actual a fin de marcar todos los mensajes anteriores como confirmados:
gcloud pubsub topics publish seek-demo-topic --message 'hello, world' gcloud pubsub subscriptions seek seek-demo-sub --time=$(date -u +$TS_FORMAT)
Después de cierto retraso de propagación (~60 segundos), el mensaje ya no se entregará. Para verificar esto, ejecuta el comando de extracción de forma repetida sin confirmar el mensaje:
gcloud pubsub subscriptions pull seek-demo-sub
Usa la consola de Cloud
Puedes crear instantáneas o buscar instantáneas existentes en la página de detalles de suscripción de la consola de Cloud. Para ver las reglas de nombres de instantáneas, consulta la sección sobre nombres de recursos.
Crea una instantánea
En la consola de Google Cloud, ve a la página Suscripciones de Pub/Sub.
Selecciona una suscripción de la lista.
Haz clic en Crear instantánea.
Ingresa un ID para la instantánea y, luego, haz clic en Crear para guardarla.
Las instantáneas se pueden ver en la página de instantáneas en la consola de Google Cloud. También puedes administrar las instantáneas en la página de detalles de un tema individual.
Cómo volver a reproducir una suscripción
El diálogo Replay messages te permite buscar un momento anterior o una instantánea guardada. Para abrir el diálogo, haz lo siguiente:
En la consola de Google Cloud, ve a la página Suscripciones de Pub/Sub.
Selecciona una suscripción de la lista.
Haz clic en Repetir mensajes.
En Buscar, selecciona A un momento anterior o A una instantánea y, luego, selecciona el momento o la instantánea al que deseas saltar.
Haz clic en Buscar para repetir los mensajes.
¿Cómo fue?
Ten en cuenta que hay recursos y vínculos adicionales disponibles en la página de asistencia de Pub/Sub.
¿Qué sigue?
Consulta la página sobre cómo volver a reproducir y descartar mensajes.