Los temas pueden usar esquemas para definir un formato que deben seguir sus mensajes. Cuando te suscribes a un tema con un esquema, se garantiza que los mensajes enviados al suscriptor serán mensajes válidos. Estos mensajes se ajustan al tipo y la codificación especificados en la configuración del esquema asociado al tema.
El suscriptor puede determinar la configuración de esquema asociada con un tema si observa los siguientes atributos:
googclient_schemaname
: El nombre del esquema que se usa para la validación. Si se borra el esquema, el nombre será_deleted-schema_
.googclient_schemaencoding
: Es la codificación del mensaje, ya sea JSON o BINARY.googclient_schemarevisionid
: Es el ID de revisión del esquema que se usa 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 borra la revisión, el ID es_deleted-schema-revision_
.
Para obtener más información sobre los esquemas, consulta Descripción general de los esquemas.
Muestras de código para suscribirse a temas asociados a un esquema
En estos ejemplos, se muestra cómo procesar mensajes cuando te suscribes a temas configurados con un esquema.
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 de la versión 1, consulta la guía de migración a la versión 2. Para ver una lista de muestras de código de la versión 1, consulta las muestras de código obsoletas.
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
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 de la versión 1, consulta la guía de migración a la versión 2. Para ver una lista de muestras de código de la versión 1, consulta las muestras de código obsoletas.
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 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 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 Pub/Sub para Python.
Avro Búfer de protocoloRuby
En el siguiente ejemplo, se usa la versión 3 de la biblioteca cliente de Pub/Sub de Ruby. Si aún usas la biblioteca de la versión 2, consulta la guía de migración a la versión 3. Para ver una lista de muestras de código de Ruby v2, consulta las muestras de código obsoletas.
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 protocoloSuscríbete a un tema asociado con un esquema de Avro con revisiones
Avro requiere que los mensajes se analicen con el esquema con el que se codifican. También puedes traducir mensajes a un esquema diferente con la resolución de esquema de Avro.
Pub/Sub garantiza que todas las revisiones de esquema sean compatibles con todas las demás revisiones, tanto hacia adelante como hacia atrás. 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 de la que usa tu suscriptor, es posible que debas obtener el esquema original y pasarlo como el esquema de escritura.
Lo mejor es almacenar en caché el objeto de lector de Avro que puede analizar mensajes para cada revisión de esquema que se encuentre, de modo que se minimice la latencia y la cantidad de llamadas a la API de GetSchema
.
En el siguiente código, se muestran estas funciones:
Lee los atributos que se analizaron en la sección anterior para determinar qué revisión del esquema se usa para codificar el mensaje.
Recupera la revisión del esquema y almacena en caché un lector generado con ella.
Analiza el mensaje en el esquema que usa tu suscriptor.
Go
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 de la versión 1, consulta la guía de migración a la versión 2. Para ver una lista de muestras de código de la versión 1, consulta las muestras de código obsoletas.
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.
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.
Roles requeridos
Para obtener los permisos que necesitas para validar un mensaje en función de un esquema, completa uno de los siguientes pasos:
- Otorga 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 agrega los siguientes permisos:
pubsub.schemas.validate
ypubsub.schemas.get
.Para obtener más información sobre los roles personalizados, consulta Crea y administra roles de IAM personalizados.