Los temas pueden usar esquemas para definir un formato que deben seguir sus mensajes. Al suscribirse a un tema con un esquema, se garantiza que los mensajes enviados al suscriptor son válidos. Estos mensajes se ajustan al tipo y la codificación especificados en los ajustes del esquema asociado al tema.
El suscriptor puede determinar los ajustes de esquema asociados a un tema consultando los siguientes atributos:
googclient_schemaname
: El nombre del esquema utilizado para la validación. Si se elimina el esquema, el nombre es_deleted-schema_
.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 se elimina la revisión, el ID es_deleted-schema-revision_
.
Para obtener más información sobre los esquemas, consulta el resumen de esquemas.
Códigos de ejemplo para suscribirse a temas asociados a un esquema
En estos ejemplos se muestra cómo procesar mensajes al suscribirse a temas configurados con un esquema.
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
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 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 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 protocoloSuscribirse a un tema asociado a un esquema Avro con revisiones
Avro requiere que los mensajes se analicen con el esquema con el que se codifican. También puedes traducir mensajes a otro esquema mediante la resolución de esquemas Avro.
Pub/Sub se asegura de que todas las revisiones de esquemas sean compatibles con todas las demás revisiones. Esta compatibilidad permite que cualquier revisión se use como esquema de lectura o escritura.
Cuando analices un mensaje codificado con una revisión de esquema diferente a la que usa tu suscriptor, puede que tengas que obtener el esquema original y pasarlo como esquema de escritura.
Es recomendable almacenar en caché el objeto de lector Avro que puede analizar mensajes de cada revisión de esquema detectada para minimizar la latencia y el número de llamadas a la API GetSchema
.
El siguiente código muestra estas funciones:
Lee los atributos que se describen en la sección anterior para determinar qué revisión del esquema se usa para codificar el mensaje.
Obtiene la revisión del esquema y almacena en caché un lector generado con él.
Analiza el mensaje en el esquema que usa tu suscriptor.
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.
Python
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.
Roles obligatorios
Para obtener los permisos que necesitas para validar un mensaje con un esquema, sigue uno de estos pasos:
- Concede uno de los siguientes roles predefinidos a una cuenta de servicio:
roles/pubsub.admin
,roles/pubsub.editor
oroles/pubsub.viewer
. Crea un rol personalizado para una cuenta de servicio y añade los siguientes permisos:
pubsub.schemas.validate
ypubsub.schemas.get
.Para obtener más información sobre los roles personalizados, consulta el artículo Crear y gestionar roles de IAM personalizados.