Les sujets peuvent utiliser des schémas pour définir un format que leurs messages doivent respecter. Lorsque vous vous abonnez à un sujet avec un schéma, la validité des messages envoyés à l'abonné est garantie. Ces messages sont conformes au type et à l'encodage spécifiés dans les paramètres de schéma associés au sujet.
L'abonné peut déterminer les paramètres de schéma associés à un sujet en consultant les attributs suivants:
googclient_schemaname
: nom du schéma utilisé pour la validation. Si le schéma est supprimé, le nom est_deleted-schema_
.googclient_schemaencoding
: encodage du message (JSON ou BINARY)googclient_schemarevisionid
: ID de révision du schéma utilisé pour analyser et valider le message. Chaque révision est associée à un ID de révision unique. L'ID de révision est un UUID à huit caractères généré automatiquement. Si la révision est supprimée, l'ID est_deleted-schema-revision_
.
Pour en savoir plus sur les schémas, consultez la page Présentation des schémas.
Exemples de code pour s'abonner à des sujets associés à un schéma
Ces exemples montrent comment traiter les messages lors de l'abonnement à des sujets configurés avec le schéma.
C++
Avant d'essayer cet exemple, suivez les instructions d'installation dans le langage C++ qui se trouvent sur la page Démarrage rapide : utiliser des bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence sur l'API Pub/Sub pour C++.
Avro ProtoC#
Avant d'essayer cet exemple, suivez les instructions d'installation dans le langage C# qui se trouvent sur la page Démarrage rapide : utiliser des bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence sur l'API Pub/Sub pour C#.
Avro ProtoGo
Avant d'essayer cet exemple, suivez les instructions d'installation dans le langage Go qui se trouvent sur la page Démarrage rapide : utiliser des bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence sur l'API Pub/Sub pour Go.
Avro ProtoJava
Avant d'essayer cet exemple, suivez les instructions d'installation dans le langage Go qui se trouvent sur la page Démarrage rapide : utiliser des bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence sur l'API Pub/Sub pour Go.
Avro Tampon de protocoleNode.js
Avant d'essayer cet exemple, suivez les instructions d'installation dans le langage Node.js qui se trouvent sur la page Démarrage rapide : utiliser des bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence sur l'API Pub/Sub pour Node.js.
Avro Tampon de protocoleNode.js
Avant d'essayer cet exemple, suivez les instructions d'installation dans le langage Node.js qui se trouvent sur la page Démarrage rapide : utiliser des bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence sur l'API Pub/Sub pour Node.js.
Avro Tampon de protocolePHP
Avant d'essayer cet exemple, suivez les instructions d'installation dans le langage PHP qui se trouvent sur la page Démarrage rapide : utiliser des bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence sur l'API Pub/Sub pour PHP.
Avro Tampon de protocolePython
Avant d'essayer cet exemple, suivez les instructions d'installation dans le langage Python qui se trouvent sur la page Démarrage rapide : utiliser des bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence sur l'API Pub/Sub pour Python.
Avro Tampon de protocoleRuby
Avant d'essayer cet exemple, suivez les instructions d'installation dans le langage Ruby qui se trouvent sur la page Démarrage rapide : utiliser des bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence sur l'API Pub/Sub pour Ruby.
Avro Tampon de protocoleS'abonner à un sujet associé à un schéma Avro avec des révisions
Avro nécessite que les messages soient analysés à l'aide du schéma avec lequel ils sont encodés. Vous pouvez également traduire des messages vers un autre schéma à l'aide de la résolution de schéma Avro.
Pub/Sub s'assure que toutes les révisions de schéma sont rétrocompatibles et compatibles avec toutes les autres révisions. Cette compatibilité permet d'utiliser n'importe quelle révision comme schéma de lecteur ou d'écrivain.
Lorsque vous analysez un message encodé avec une révision de schéma différente de celle utilisée par votre abonné, vous devrez peut-être obtenir le schéma d'origine et le transmettre en tant que schéma de l'auteur.
Il est préférable de mettre en cache l'objet lecteur Avro pouvant analyser les messages pour chaque révision de schéma rencontrée afin de réduire la latence et le nombre d'appels à l'API GetSchema
.
Le code suivant illustre ces fonctions:
Consultez les attributs décrits dans la section précédente pour déterminer la révision de schéma utilisée pour encoder le message.
Récupérez la révision du schéma et mettez en cache un lecteur généré avec celui-ci.
Analysez le message dans le schéma utilisé par votre abonné.
Go
Avant d'essayer cet exemple, suivez les instructions d'installation dans le langage Go qui se trouvent sur la page Démarrage rapide : utiliser des bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence sur l'API Pub/Sub pour Go.
Java
Avant d'essayer cet exemple, suivez les instructions d'installation dans le langage Java qui se trouvent sur la page Démarrage rapide : utiliser des bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence sur l'API Pub/Sub pour Java.
Python
Avant d'essayer cet exemple, suivez les instructions d'installation dans le langage Python qui se trouvent sur la page Démarrage rapide : utiliser des bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence sur l'API Pub/Sub pour Python.
Rôles requis
Pour obtenir les autorisations nécessaires pour valider un message par rapport à un schéma, procédez comme suit:
- Attribuez l'un des rôles prédéfinis suivants à un compte de service:
roles/pubsub.admin
,roles/pubsub.editor
ouroles/pubsub.viewer
. Créez un rôle personnalisé pour un compte de service et ajoutez les autorisations
pubsub.schemas.validate
etpubsub.schemas.get
.Pour en savoir plus sur les rôles personnalisés, consultez Créer et gérer des rôles IAM personnalisés.