En este documento se proporciona información sobre cómo usar el control de simultaneidad con los mensajes publicados en un tema.
El control de simultaneidad le ayuda a anular el número predeterminado de subprocesos de entrada/salida en segundo plano que usa la biblioteca de cliente para publicar mensajes. De esta forma, los clientes editores pueden enviar mensajes en paralelo.
El control de simultaneidad es una función disponible en la biblioteca de cliente de alto nivel de Pub/Sub. También puedes implementar tu propio control de simultaneidad cuando uses una biblioteca de bajo nivel.
La compatibilidad con el control de simultaneidad depende del lenguaje de programación de la biblioteca de cliente. En el caso de las implementaciones de lenguajes que admiten subprocesos paralelos, como C++, Go y Java, las bibliotecas de cliente eligen un número de subprocesos predeterminado.
En esta página se explica el concepto de control de simultaneidad y cómo configurar la función para tus clientes editores. Para configurar tus clientes de suscriptor para el control de la simultaneidad, consulta Procesar más mensajes con el control de la simultaneidad.
Antes de empezar
Antes de configurar el flujo de trabajo de publicación, asegúrate de que has completado las siguientes tareas:
- Consulta información sobre los temas y el flujo de trabajo de publicación.
- Crea un tema.
Roles obligatorios
Para obtener los permisos que necesitas para publicar mensajes en un tema, pide a tu administrador que te conceda el rol de gestión de identidades y accesos Editor de Pub/Sub (roles/pubsub.publisher
) en el tema.
Para obtener más información sobre cómo conceder roles, consulta el artículo Gestionar el acceso a proyectos, carpetas y organizaciones.
También puedes conseguir los permisos necesarios a través de roles personalizados u otros roles predefinidos.
Necesitas permisos adicionales para crear o actualizar temas y suscripciones.
Configuraciones de control de simultaneidad
Los valores predeterminados de las variables de control de simultaneidad y los nombres de las variables pueden variar en las bibliotecas de cliente. Por ejemplo, en la biblioteca de cliente de Java, los métodos para configurar el control de simultaneidad son setExecutorProvider()
y setChannelProvider()
. Para obtener más información, consulta la documentación de referencia de la API.
setExecutorProvider() te permite personalizar el proveedor de ejecutores que se usa para procesar las respuestas de publicación. Por ejemplo, puedes cambiar el proveedor de ejecutores por uno que devuelva un único ejecutor compartido con un número limitado de hilos en varios clientes de editores. Esta configuración ayuda a limitar el número de hilos creados.
setChannelProvider() te permite personalizar el proveedor de canales que se usa para abrir conexiones a Pub/Sub. Por lo general, no se configura este valor a menos que quieras usar el mismo canal en varios clientes editores. Si se reutiliza un canal en demasiados clientes, pueden producirse errores
GOAWAY
oENHANCE_YOUR_CALM
. Si ves estos errores en los registros de tu aplicación o en Cloud Logs, crea más canales.
Ejemplos de código para el control de la simultaneidad
C++
Antes de probar este ejemplo, sigue las instrucciones de configuración de C++ que se indican en la guía de inicio rápido sobre cómo usar bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API de C++ de Pub/Sub.
Go
En el siguiente ejemplo se usa la versión principal de la biblioteca de cliente de Pub/Sub de Go (v2). Si sigues usando la biblioteca v1, consulta la guía de migración a la versión 2. Para ver una lista de ejemplos de código de la versión 1, consulta los ejemplos de código obsoletos.
Antes de probar este ejemplo, sigue las instrucciones de configuración de Go que se indican en la guía de inicio rápido sobre cómo usar bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API Go de Pub/Sub.
Java
Antes de probar este ejemplo, sigue las instrucciones de configuración de Java que se indican en la guía de inicio rápido sobre cómo usar bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API de Java de Pub/Sub.
Ruby
En el siguiente ejemplo se usa la biblioteca de cliente de Ruby Pub/Sub v3. Si sigues usando la biblioteca v2, consulta la guía de migración a la versión 3. Para ver una lista de ejemplos de código de Ruby v2, consulta los ejemplos de código obsoletos.
Antes de probar este ejemplo, sigue las instrucciones de configuración de Ruby que se indican en la guía de inicio rápido sobre cómo usar bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API de Ruby de Pub/Sub.
Siguientes pasos
Para restringir las ubicaciones en las que Pub/Sub almacena datos de mensajes, consulta Restringir las ubicaciones de recursos de Pub/Sub.
Para obtener más información sobre cómo recibir mensajes, consulta Elegir un tipo de suscripción.