En este documento, se proporciona información sobre el uso del control de flujo con mensajes. que se publican en un tema.
Información acerca del control de flujo
Un cliente publicador puede intentar publicar mensajes más rápido de lo que ese cliente puede enviar datos al servicio de Pub/Sub. Los clientes están limitados por muchos factores, incluidos los siguientes:
- El CPU, la RAM y la capacidad de red de la máquina
- La configuración de red, como la cantidad de solicitudes pendientes y el ancho de banda disponible
- La latencia de cada solicitud de publicación, determinada en gran medida por las conexiones de red entre el servicio de Pub/Sub, el cliente y Google Cloud
Si la tasa de solicitudes de publicación supera estos límites, las solicitudes se acumulan en la memoria.
hasta que fallen con un error DEADLINE_EXCEEDED
. Es muy probable que esto suceda cuando se publican decenas de miles de mensajes en un bucle, lo que genera miles de solicitudes en milisegundos.
Para diagnosticar este problema, puedes verificar las métricas del servidor en Monitoring. No podrás ver las solicitudes que fallaron con DEADLINE_EXCEEDED
, solo las solicitudes exitosas. La tasa de solicitudes exitosas te indica la capacidad de procesamiento de las máquinas de cliente, lo que proporciona un modelo de referencia para configurar el control de flujo.
A fin de mitigar los problemas de la tasa de flujo, configura tu cliente publicador con un control de flujo para limitar la frecuencia de solicitudes de publicación. Puedes configurar la cantidad máxima de bytes asignados para las solicitudes pendientes y la cantidad máxima de mensajes pendientes permitidos. Establece estos límites según la capacidad de procesamiento de las máquinas de cliente.
Antes de comenzar
Antes de configurar el flujo de trabajo de publicación, asegúrate de haber completado los siguientes pasos: tareas:
- Obtén más información sobre los temas y el flujo de trabajo de publicación.
- Crea un tema.
Roles obligatorios
A fin de obtener los permisos que necesitas para usar el control de flujo,
solicita a tu administrador que te otorgue el
Rol de IAM de Publicador de Pub/Sub (roles/pubsub.publisher
) en tu tema.
Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.
También puedes obtener los permisos necesarios mediante roles personalizados o cualquier otro rol predefinido.
Necesitas permisos adicionales para crear o actualizar temas y suscripciones.
Cómo usar el control de flujo con mensajes
El control de flujo de editores está disponible Bibliotecas cliente de Pub/Sub en los siguientes idiomas:
C++
Antes de probar esta muestra, sigue las instrucciones de configuración de C++ 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 C++.
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 probar esta muestra, sigue las instrucciones de configuración de Java 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 Java.
Node.js
Antes de probar esta muestra, sigue las instrucciones de configuración de Node.js 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 Node.js.
Node.js
Antes de probar esta muestra, sigue las instrucciones de configuración de Node.js 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 Node.js.
Python
Antes de probar esta muestra, sigue las instrucciones de configuración de Python 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 Python.
Ruby
Antes de probar esta muestra, sigue las instrucciones de configuración de Ruby 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 Ruby.