En este documento, se muestra cómo publicar mensajes en un tema con un esquema.
Antes de comenzar
Antes de configurar el flujo de trabajo de publicación, asegúrate de haber completado las siguientes tareas:
- Comprende 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,
pídele a tu administrador que te otorgue el
rol de IAM Publicador de Pub/Sub (roles/pubsub.publisher) en el 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.Publica mensajes con un esquema
Puedes publicar mensajes en un tema asociado con un esquema. Debes codificar los mensajes en el esquema y el formato que especificaste cuando creaste el tema. Un mensaje coincide con el esquema asociado al tema si coincide con alguna de las revisiones del esquema en el rango permitido de revisiones. Los mensajes se evalúan en función de las revisiones en orden 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 agrega los siguientes atributos a un mensaje publicado correctamente en un tema asociado con un esquema:
googclient_schemaname: El nombre del esquema que se usa para la validación.googclient_schemaencoding: La codificación del mensaje, ya sea JSON o BINARY.googclient_schemarevisionid: El ID de revisión del esquema que se usa para analizar y validar el mensaje. Cada revisión tiene un ID de revisión único asociado. El ID de revisión es un UUID de ocho caracteres generado automáticamente.
Cuando un mensaje no coincide con ninguna de las revisiones de esquema permitidas por el tema, Pub/Sub muestra un error INVALID_ARGUMENT en la solicitud de publicación.
Pub/Sub solo evalúa los mensajes en función de las revisiones de esquema en el momento de la publicación. Confirmar una nueva revisión de 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 del mensaje de esquema adjunto.
Puedes publicar mensajes en un tema con un esquema asociado en un proyecto de Google Cloud con la consola de Google Cloud, gcloud CLI, la API de Pub/Sub o las bibliotecas cliente de Cloud.
gcloud
En la Google Cloud consola, activa Cloud Shell.
En la parte inferior de la Google Cloud consola, se inicia una sesión de Cloud Shell en la que se muestra una ventana de línea de comandos. Cloud Shell es un entorno de shell con Google Cloud CLI ya instalada y con valores ya establecidos para el proyecto actual. La sesión puede tardar unos segundos en inicializarse.
Publica un mensaje de muestra con el comando gcloud pubsub topics publish.
gcloud pubsub topics publish TOPIC_ID \ --message=MESSAGEReemplaza lo siguiente:
TOPIC_ID: Nombre del tema que ya creaste.
MESSAGE: Mensaje publicado en el tema. Un mensaje de muestra puede ser
{"name": "Alaska", "post_abbr": "AK"}.
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++.
Avro ProtoC#
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#.
Avro ProtoGo
En el siguiente ejemplo, se usa la versión principal de la biblioteca cliente de Pub/Sub de Go (v2). Si aún usas la biblioteca v1, consulta la guía de migración a la v2. Para ver una lista de ejemplos de código de la v1, consulta los ejemplos de código obsoletos.
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.
Avro ProtoJava
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.
Avro ProtoNode.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.
Avro Búfer de protocoloNode.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.
Avro Búfer de protocoloPHP
Antes de probar esta muestra, sigue las instrucciones de configuración de PHP 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 PHP.
Avro Búfer de protocoloPython
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 Python de Pub/Sub .
Avro Búfer de protocoloRuby
En el siguiente ejemplo, se usa la biblioteca cliente de Pub/Sub de Ruby v3. Si aún usas la biblioteca v2, consulta la guía de migración a la v3. Para ver una lista de ejemplos de código de la v2 de Ruby, consulta los ejemplos de código obsoletos.
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.
Avro Búfer de protocolo¿Qué sigue?
Para restringir las ubicaciones en las que Pub/Sub almacena datos de mensajes, consulta Restringe las ubicaciones de recursos de Pub/Sub.
Si quieres obtener más información para recibir mensajes, consulta Elige un tipo de suscripción.