En esta página, se explica cómo recibir mensajes de las suscripciones de Lite. Puedes recibir mensajes con la biblioteca cliente de Pub/Sub Lite para Java.
Las suscripciones Lite conectan temas de Lite con aplicaciones de suscriptores. Los suscriptores reciben mensajes de suscripciones Lite. Los suscriptores reciben todos los mensajes que las aplicaciones de publicador envían al tema Lite, incluidos los mensajes que los publicadores envían antes de crear la suscripción Lite.
Antes de recibir mensajes de una suscripción Lite, crea un tema Lite, crea una suscripción Lite al tema de Lite y publica mensajes allí.
Recibe mensajes
Para recibir mensajes de una suscripción Lite, solicita mensajes desde la suscripción Lite. La biblioteca cliente se conecta de forma automática a las particiones en el tema Lite conectado con la suscripción Lite. Si se crea más de una instancia de cliente suscriptor, los mensajes se distribuirán entre todos los clientes. La cantidad de particiones del tema determina la cantidad máxima de clientes suscriptores que pueden conectarse a una suscripción de forma simultánea.
Los suscriptores pueden tardar hasta un minuto en inicializarse y comenzar a recibir mensajes. Después de la inicialización, los mensajes se reciben con una latencia mínima.
En el siguiente ejemplo, se muestra cómo recibir mensajes de suscripciones Lite:
gcloud
Este comando requiere Python 3.6 o una versión superior, y requiere que se instale el paquete grpcio para Python. Para usuarios de MacOS, Linux y Cloud Shell, ejecuta lo siguiente:
sudo pip3 install grpcio
export CLOUDSDK_PYTHON_SITEPACKAGES=1
Para recibir mensajes, usa el comando gcloud pubsub lite-subscriptions subscribe:
gcloud pubsub lite-subscriptions subscribe SUBSCRIPTION_ID \
--location=LITE_LOCATION \
--auto-ack
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.
Go
Antes de ejecutar esta muestra, sigue las instrucciones de configuración de Go en las bibliotecas cliente de Pub/Sub Lite.
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 de Python en las bibliotecas cliente de Pub/Sub Lite.
La biblioteca cliente establece conexiones de transmisión bidireccional para cada una de las particiones del tema de Lite.
El suscriptor solicita conexiones a las particiones.
El servicio Lite de Pub/Sub entrega los mensajes al suscriptor.
Después de que el suscriptor procese el mensaje, el suscriptor debe confirmar la recepción del mensaje. La biblioteca cliente procesa y confirma la recepción de los mensajes forma asíncrona en una devolución de llamada. Para limitar la cantidad de mensajes no confirmados que el suscriptor puede almacenar en la memoria, establece la configuración del control de flujo.
Si varios suscriptores reciben mensajes de la misma suscripción Lite, el servicio Lite de Pub/Sub conecta cada suscriptor con una proporción igual de particiones. Por ejemplo, si dos suscriptores usan la misma suscripción Lite y la suscripción está conectada a un tema Lite con dos particiones, cada suscriptor recibe mensajes desde una de las particiones.
Confirma mensajes
Para confirmar recepción de un mensaje, envía una confirmación de recepción a la suscripción Lite.
Go
Para enviar una confirmación de recepción, usa el método Message.Ack()
.
Java
Para enviar una confirmación de recepción, usa el método AckReplyConsumer.ack()
.
Python
Para enviar una confirmación de recepción, usa el método Message.ack()
.
Los suscriptores deben confirmar todos los mensajes. Los suscriptores reciben primero el mensaje no confirmado más antiguo, seguido de cada mensaje subsiguiente. Si un suscriptor omite un mensaje, confirma los mensajes posteriores y se vuelve a conectar, el suscriptor recibe el mensaje no confirmado y cada uno confirmado posterior.
Las suscripciones Lite no tienen un plazo de confirmación y el servicio Lite de Pub/Sub no vuelve a entregar los mensajes no confirmados a través de una conexión de transmisión abierta.
Usa el control de flujo
Después de que el servicio de Pub/Sub Lite entrega mensajes a los suscriptores, los suscriptores almacenan mensajes no confirmados en la memoria. Puedes limitar la cantidad de mensajes pendientes que los suscriptores pueden almacenar en la memoria mediante la configuración de control de flujo. La configuración del control de flujo se aplica a cada partición de la que un suscriptor recibe mensajes.
Puedes definir la siguiente configuración del control de flujo:
- Tamaño de mensajes pendientes. El tamaño máximo de los mensajes pendientes en bytes. El tamaño máximo debe ser mayor que el tamaño del mensaje más grande.
- Cantidad de mensajes La cantidad máxima de mensajes pendientes.
El tamaño de un mensaje se encuentra en el campo size_bytes
.
Puedes configurar los controles de control de flujo con la biblioteca cliente.
Go
Para configurar los controles de flujo, pasa ReceiveSettings
cuando llames a pscompat.NewSubscriberClientWithSettings
. Puedes configurar los siguientes parámetros en ReceiveSettings
:
MaxOutstandingMessages
MaxOutstandingBytes
Para ver un ejemplo, consulta esta muestra de control de flujo.
Java
Para establecer la configuración del control de flujo, usa los siguientes métodos en la clase FlowControlRequest.Builder
:
Python
Para configurar los controles de flujo, establece los siguientes parámetros en la clase FlowControlSettings
:
bytes_outstanding
messages_outstanding
Por ejemplo, si el número máximo de mensajes es 100 y el suscriptor se conecta a 10 particiones, el suscriptor no puede recibir más de 100 mensajes de cualquiera de las 10 particiones. La cantidad total de mensajes pendientes podría ser mayor a 100, pero el suscriptor no puede almacenar más de 100 mensajes de cada partición.