En este documento se explica cómo publicar mensajes en un tema con un esquema.
Antes de empezar
Antes de configurar el flujo de trabajo de publicación, asegúrate de que has completado las siguientes tareas:
- Consulta cómo funcionan los esquemas de Pub/Sub.
- Asocia un esquema a 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.Publicar mensajes con un esquema
Puedes publicar mensajes en un tema asociado a un esquema. Debes codificar los mensajes en el esquema y el formato que hayas especificado al crear el tema. Un mensaje coincide con el esquema asociado al tema si coincide con alguna de las revisiones del esquema en el intervalo de revisiones permitido. Los mensajes se evalúan en función de las revisiones, desde la revisión permitida más reciente hasta que se encuentra una coincidencia o se alcanza la revisión permitida más antigua. Pub/Sub añade los siguientes atributos a un mensaje que se ha publicado correctamente en un tema asociado a un esquema:
googclient_schemaname
: El nombre del esquema utilizado para la validación.googclient_schemaencoding
: la codificación del mensaje, que puede ser JSON o BINARY.googclient_schemarevisionid
: el ID de revisión del esquema utilizado para analizar y validar el mensaje. Cada revisión tiene un ID único asociado. El ID de revisión es un UUID de ocho caracteres generado automáticamente.
Si un mensaje no coincide con ninguna de las revisiones de esquema permitidas por el tema, Pub/Sub devuelve un error INVALID_ARGUMENT
a la solicitud de publicación.
Pub/Sub solo evalúa los mensajes con respecto a las revisiones del esquema en el momento de la publicación. Confirmar una nueva revisión del esquema o cambiar el esquema asociado a un tema después de publicar un mensaje no vuelve a evaluar ese mensaje ni cambia ninguno de los atributos de mensaje del esquema adjunto.
Puedes publicar mensajes en un tema con un esquema asociado en un proyecto de Google Cloud mediante la consola de Google Cloud, la CLI de gcloud, la API Pub/Sub o las bibliotecas de cliente de Cloud.
gcloud
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
Publica un mensaje de ejemplo con el comando gcloud pubsub topics publish.
gcloud pubsub topics publish TOPIC_ID \ --message=MESSAGE
Haz los cambios siguientes:
TOPIC_ID: nombre del tema que ya has creado.
MESSAGE: mensaje publicado en el tema. Un mensaje de muestra puede ser
{"name": "Alaska", "post_abbr": "AK"}
.
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.
Avro ProtoC#
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.
Avro ProtoGo
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.
Avro ProtoJava
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.
Avro ProtoNode.js
Antes de probar este ejemplo, sigue las instrucciones de configuración de Node.js 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 Node.js de Pub/Sub.
Avro Búfer de protocoloNode.js
Antes de probar este ejemplo, sigue las instrucciones de configuración de Node.js 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 Node.js de Pub/Sub.
Avro Búfer de protocoloPHP
Antes de probar este ejemplo, sigue las instrucciones de configuración de PHP 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 Pub/Sub para PHP.
Avro Búfer de protocoloPython
Antes de probar este ejemplo, sigue las instrucciones de configuración de Python 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 Python de Pub/Sub.
Avro Búfer de protocoloRuby
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.
Avro Búfer de protocoloSiguientes 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.