En esta página, se muestra cómo iniciar operaciones de búsqueda y hacer un seguimiento de ellas para suscripciones de Lite.
La función de búsqueda de Pub/Sub Lite te permite volver a reproducir y borrar definitivamente mensajes. Tiene los mismos casos de uso que la búsqueda de Pub/Sub. A diferencia de Pub/Sub, no necesitas configurar temas de Lite ni suscripciones para usar la búsqueda y no hay costo adicional.
Se puede realizar un seguimiento de la propagación del salto a los suscriptores mediante una operación de larga duración. Este es un patrón de API que usan los productos de Google Cloud para realizar un seguimiento del progreso de las tareas de larga duración.
Iniciando la búsqueda
Las operaciones de búsqueda de Pub/Sub Lite se inician fuera de banda (es decir, desde Google Cloud CLI o la API de Pub/Sub Lite independiente) y se propagan a los suscriptores. Se notificará a los suscriptores en línea sobre la búsqueda y la reacción mientras estén en vivo. Los suscriptores sin conexión reaccionarán a la búsqueda una vez que estén en línea.
Debes especificar una ubicación de destino para la búsqueda, que puede ser una de las siguientes:
- Inicio de la lista de mensajes pendientes: repite todos los mensajes retenidos. Ten en cuenta que el período de retención de mensajes y la capacidad de almacenamiento del tema Lite determinan la cantidad de trabajos pendientes disponibles.
- Fin del trabajo pendiente del mensaje: Borra definitivamente los mensajes omitiendo todos los mensajes publicados actualmente.
- Marca de tiempo de publicación: Busca el primer mensaje con una marca de tiempo de publicación (generada por el servidor) mayor o igual que la marca de tiempo especificada. Si no se puede encontrar tal mensaje, busca el final de las tareas pendientes de mensajes. Se garantiza que los mensajes posteriores tengan una marca de tiempo de publicación mayor o igual que la marca de tiempo especificada, a excepción de las marcas de tiempo especificadas que se encuentren en el futuro.
- Marca de tiempo del evento: Busca el primer mensaje con una marca de tiempo de evento (especificada por el usuario) mayor o igual que la marca de tiempo especificada. Si no se puede encontrar tal mensaje, busca el final de las tareas pendientes de mensajes. Como el usuario proporciona las marcas de tiempo del evento, los mensajes posteriores pueden tener marcas de tiempo del evento menores que la hora del evento especificada, y el cliente debe filtrarlos si es necesario. Si los mensajes no tienen establecida una marca de tiempo de evento, sus marcas de tiempo de publicación se usan como resguardo.
Puedes iniciar la búsqueda de una suscripción Lite con Google Cloud CLI o la API de Pub/Sub Lite.
gcloud
Para encontrar una suscripción Lite, usa el comando gcloud pubsub lite-subscriptions seek
:
gcloud pubsub lite-subscriptions seek SUBSCRIPTION_ID \ --location=LITE_LOCATION \ (--publish-time=PUBLISH_TIME | --event-time=EVENT_TIME | \ --starting-offset=STARTING_OFFSET) \ [--async]
Reemplaza lo siguiente:
SUBSCRIPTION_ID: Es el ID de la suscripción Lite.
LITE_LOCATION: Es la ubicación de la suscripción a Lite.
PUBLISH_TIME: Es la marca de tiempo de publicación que se buscará.
EVENT_TIME: Es la marca de tiempo del evento que se debe buscar.
STARTING_OFFSET:
beginning
oend
Consulta gcloud topic datetimes
para obtener información sobre los formatos de hora.
Si especificas la marca --async
y la solicitud se realiza correctamente, la línea de comandos mostrará el ID de la operación de búsqueda:
Check operation [projects/PROJECT_NUMBER/locations/LITE_LOCATION/operations/OPERATION_ID] for status.
Usa el comando gcloud pubsub lite-operations describe
para obtener el estado operativo.
REST
Para buscar una suscripción Lite, envía una solicitud POST
como la siguiente:
POST https://REGION-pubsublite.googleapis.com/v1/admin/projects/PROJECT_NUMBER/locations/LITE_LOCATION/subscriptions/SUBSCRIPTION_ID:seek Authorization: Bearer $(gcloud auth print-access-token)
Reemplaza lo siguiente:
REGION: Es la región en la que se encuentra la suscripción Lite.
PROJECT_NUMBER: Es el número de proyecto con la suscripción Lite.
LITE_LOCATION: Es la ubicación de la suscripción a Lite.
SUBSCRIPTION_ID: Es el ID de la suscripción Lite.
Para buscar el principio o el final de las tareas pendientes de mensajes, configura los siguientes campos en el cuerpo de la solicitud:
{ "namedTarget": NAMED_TARGET }
Reemplaza lo siguiente:
- NAMED_TARGET:
TAIL
para el principio oHEAD
para el final de las tareas pendientes de mensajes.
Para buscar una marca de tiempo de publicación, configura los siguientes campos en el cuerpo de la solicitud:
{ "timeTarget": { "publishTime": TIMESTAMP } }
Especifica "eventTime"
para buscar una marca de tiempo de evento.
Reemplaza lo siguiente:
- TIMESTAMP: Es una marca de tiempo en formato RFC 3339 UTC, con una resolución de nanosegundos y hasta nueve dígitos fraccionarios. Ejemplos:
"2014-10-02T15:01:23Z"
y"2014-10-02T15:01:23.045123456Z"
.
Si la solicitud se realiza correctamente, la respuesta es una operación de larga duración en formato JSON:
{ "name": projects/PROJECT_NUMBER/locations/LITE_LOCATION/operations/OPERATION_ID, ... }
Go
Antes de probar esta muestra, sigue las instrucciones de configuración de Go en la guía de inicio rápido sobre el uso de bibliotecas cliente. Si quieres obtener más información, consulta la documentación de referencia de la API de Pub/Sub para Go.
Java
Antes de ejecutar esta muestra, sigue las instrucciones de configuración de Java en las bibliotecas cliente de Pub/Sub Lite.
Python
Antes de ejecutar esta muestra, sigue las instrucciones de configuración para Python en las bibliotecas cliente de Pub/Sub Lite.
Si la solicitud de búsqueda se realiza correctamente, la respuesta es un ID de operación de larga duración. Consulta la siguiente información sobre la propagación de la búsqueda de seguimiento si necesitas saber cuándo reaccionaron los suscriptores a la búsqueda.
Clientes admitidos
Las operaciones de búsqueda requieren suscriptores que usen las siguientes bibliotecas cliente de Pub/Sub Lite y versiones mínimas:
- java-pubsublite: versión 0.15.0.
- java-pubsublite-kafka: versión 0.6.0. Los consumidores también deben tener habilitada la confirmación automática.
- python-pubsublite: versión 0.6.0
- google-cloud-go: pubsublite versión 0.10.0.
Las operaciones de búsqueda no funcionan cuando se usa Pub/Sub Lite con Apache Beam o Apache Spark porque estos sistemas realizan su propio seguimiento de los desplazamientos dentro de las particiones. La solución alternativa es desviar, buscar y reiniciar los flujos de trabajo.
El servicio de Pub/Sub Lite puede detectar un cliente suscriptor que no admita operaciones de búsqueda (por ejemplo, una versión anterior de biblioteca cliente o framework no compatible) y anulará la búsqueda con un estado de error FAILED_PRECONDITION
.
Seguimiento de la propagación de búsqueda
Si se muestra un ID de operación de larga duración para la solicitud de búsqueda inicial, significa que la búsqueda se registró correctamente en el servicio de Pub/Sub Lite y, con el tiempo, se propagará a los suscriptores (si el cliente es compatible, como se indicó anteriormente). La operación realiza un seguimiento de esta propagación y se completa una vez que los suscriptores reaccionan a la búsqueda, para todas las particiones.
Si los suscriptores están en línea, pueden tardar hasta 30 segundos en recibir la notificación de búsqueda. Las notificaciones de búsqueda se envían de forma independiente para cada partición, por lo que es posible que estas no reaccionen a la búsqueda en el mismo instante. Si los suscriptores están sin conexión, la operación de búsqueda se completará cuando estén en línea.
Si una invocación de búsqueda anterior no terminó de propagarse a los suscriptores, se anula y se reemplaza por la nueva operación de búsqueda. Los metadatos de la operación de búsqueda vencen después de 30 días, lo que anula de forma efectiva cualquier operación de búsqueda incompleta.
Buscar el estado de la operación
Puedes obtener el estado de una operación de búsqueda con Google Cloud CLI o la API de Pub/Sub Lite.
gcloud
Para obtener detalles sobre una operación de Lite, usa el comando gcloud pubsub lite-operations describe
:
gcloud pubsub lite-operations describe OPERATION_ID \ --location=LITE_LOCATION
Reemplaza lo siguiente:
OPERATION_ID: Es el ID de la operación de Lite.
LITE_LOCATION: Es la ubicación de la operación de Lite.
Si la solicitud se realiza correctamente, la línea de comandos mostrará los metadatos sobre la operación de Lite:
metadata: '@type': type.googleapis.com/google.cloud.pubsublite.v1.OperationMetadata createTime: '2021-01-02T03:04:05Z' target: projects/PROJECT_NUMBER/locations/LITE_LOCATION/subscriptions/SUBSCRIPTION_ID verb: seek name: projects/PROJECT_NUMBER/locations/LITE_LOCATION/operations/OPERATION_ID
REST
Para obtener detalles sobre operaciones de Lite, envía una solicitud GET
como la siguiente:
GET https://REGION-pubsublite.googleapis.com/v1/admin/projects/PROJECT_NUMBER/locations/LITE_LOCATION/operations/OPERATION_ID Authorization: Bearer $(gcloud auth print-access-token)
Reemplaza lo siguiente:
REGION: Es la región en la que se encuentra la operación Lite.
PROJECT_NUMBER: el número del proyecto con la operación de Lite
LITE_LOCATION: Es la ubicación de la operación de Lite.
OPERATION_ID: Es el ID de la operación de Lite.
Si la solicitud se realiza correctamente, la respuesta es una operación de larga duración en formato JSON:
{ "name": projects/PROJECT_NUMBER/locations/LITE_LOCATION/operations/OPERATION_ID, ... }
Cómo enumerar operaciones de búsqueda
Las operaciones de búsqueda completadas y activas se pueden enumerar con Google Cloud CLI o la API de Pub/Sub Lite.
gcloud
Para enumerar las operaciones Lite de un proyecto, usa el comando gcloud pubsub lite-operations list
:
gcloud pubsub lite-operations list \
--location=LITE_LOCATION \
[--subscription=SUBSCRIPTION] \
[--done=DONE] \
[--limit=LIMIT]
Reemplaza lo siguiente:
LITE_LOCATION: Es la ubicación en la que se encuentran las operaciones de Lite.
SUBSCRIPTION: Filtra operaciones por suscripción Lite.
DONE: Es
true
para incluir solo las operaciones completas yfalse
para incluir solo las operaciones activas.LIMIT: Es un número entero para limitar la cantidad de operaciones que se muestran.
Si la solicitud se realiza correctamente, la línea de comandos mostrará un resumen de las operaciones de Lite:
OPERATION_ID TARGET CREATE_TIME DONE ERROR_CODE MESSAGE operation2 projects/PROJECT_NUMBER/locations/LITE_LOCATION/subscriptions/SUBSCRIPTION_ID 2021-05-06T07:08:00Z True operation1 projects/PROJECT_NUMBER/locations/LITE_LOCATION/subscriptions/SUBSCRIPTION_ID 2021-01-02T03:04:00Z True
REST
Para enumerar las operaciones Lite de un proyecto, envía una solicitud GET
como la siguiente:
GET https://REGION-pubsublite.googleapis.com/v1/admin/projects/PROJECT_NUMBER/locations/LITE_LOCATION/operations Authorization: Bearer $(gcloud auth print-access-token)
Reemplaza lo siguiente:
REGION: Es la región en la que se encuentran las operaciones de Lite.
PROJECT_NUMBER: el número del proyecto con las operaciones de Lite
LITE_LOCATION: Es la ubicación en la que se encuentran las operaciones de Lite.
Si la solicitud se realiza correctamente, la respuesta es una lista de operaciones de Lite en formato JSON:
{ "operations": [ { "name": "projects/PROJECT_NUMBER/locations/LITE_LOCATION/operations/OPERATION_ID", ... }, { "name": "projects/PROJECT_NUMBER/locations/LITE_LOCATION/operations/OPERATION_ID", ... } ] }