Buscar una instantánea o marca de tiempo para volver a reproducir un mensaje en Pub/Sub

Pub/Sub no puede recuperar los mensajes después de que los confirmes. Sin embargo, a veces puede ser necesario volver a reproducir los mensajes confirmados, por ejemplo, si realizaste una confirmación errónea. Luego, puedes usar la función Buscar para marcar los mensajes confirmados como no confirmados y forzar a Pub/Sub a volver a entregarlos. También puedes usar la búsqueda 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 en una suscripción. En esta guía, se muestran ejemplos de cómo volver a reproducir mensajes de Pub/Sub confirmados con anterioridad mediante búsquedas.


Para seguir la guía paso a paso sobre esta tarea de forma directa en la consola de Google Cloud, haz clic en Guiarme:

Guiarme


Antes de comenzar

  1. Accede a tu cuenta de Google Cloud. Si eres nuevo en Google Cloud, crea una cuenta para evaluar el rendimiento de nuestros productos en situaciones reales. Los clientes nuevos también obtienen $300 en créditos gratuitos para ejecutar, probar y, además, implementar cargas de trabajo.
  2. Configura un proyecto de la consola de Google Cloud.

    Configura un proyecto

    Haz clic para realizar alguna de las siguientes acciones:

    • Crea o selecciona un proyecto.
    • Habilita la API de Pub/Sub para ese proyecto.

    Puedes ver y administrar estos recursos en cualquier momento desde la consola de Google Cloud.

  3. Instala Google Cloud CLI.
  4. Para inicializar la CLI de gcloud, ejecuta el siguiente comando:

    gcloud init
  5. Configura un proyecto de la consola de Google Cloud.

    Configura un proyecto

    Haz clic para realizar alguna de las siguientes acciones:

    • Crea o selecciona un proyecto.
    • Habilita la API de Pub/Sub para ese proyecto.

    Puedes ver y administrar estos recursos en cualquier momento desde la consola de Google Cloud.

  6. Instala Google Cloud CLI.
  7. Para inicializar la CLI de gcloud, ejecuta el siguiente comando:

    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 se cumplen de forma automática para gcloud CLI si creas una instancia de máquina de Compute Engine nueva con permisos 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)

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 Cloud Console. Para ver las reglas de nombres de instantáneas, consulta la sección sobre nombres de recursos.

Crea una instantánea

  1. En la consola de Google Cloud, ve a la página Suscripciones de Pub/Sub.

    Ir a la página Suscripciones

  2. Selecciona una suscripción de la lista.

  3. Haz clic en Crear instantánea.

  4. Ingresa un ID para la instantánea y, luego, haz clic en Crear a fin de guardarla.

Las instantáneas se pueden ver en la página de instantáneas de 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 Volver a reproducir mensajes te permite buscar un momento anterior o una instantánea guardada. Para abrir el diálogo, sigue estos pasos:

  1. En la consola de Google Cloud, ve a la página Suscripciones de Pub/Sub.

    Ir a la página Suscripciones

  2. Selecciona una suscripción de la lista.

  3. Haz clic en Volver a reproducir mensajes.

  4. En Buscar, selecciona A un momento anterior o A una instantánea y, luego, selecciona el momento o la instantánea que quieras buscar.

  5. Haz clic en Buscar para volver a reproducir 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.