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 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
L'exemple suivant utilise la version majeure de la bibliothèque cliente Go Pub/Sub (v2). Si vous utilisez toujours la bibliothèque v1, consultez le guide de migration vers la v2. Pour consulter la liste des exemples de code de la version 1, consultez les exemples de code obsolètes.
Avant d'essayer cet exemple, suivez les instructions de configuration pour Go du guide de démarrage rapide : Utiliser les bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence sur l'API Pub/Sub pour Go.
Avro ProtoJava
L'exemple suivant utilise la version majeure de la bibliothèque cliente Go Pub/Sub (v2). Si vous utilisez toujours la bibliothèque v1, consultez le guide de migration vers la v2. Pour consulter la liste des exemples de code de la version 1, consultez les exemples de code obsolètes.
Avant d'essayer cet exemple, suivez les instructions de configuration pour Go du guide de démarrage rapide : Utiliser les 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
L'exemple suivant utilise la bibliothèque cliente Ruby Pub/Sub v3. Si vous utilisez toujours la bibliothèque v2, consultez le guide de migration vers la v3. Pour afficher la liste des exemples de code Ruby v2, consultez les exemples de code obsolètes.
Avant d'essayer cet exemple, suivez les instructions de configuration pour Ruby du guide de démarrage rapide : Utiliser les 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 exige que les messages soient analysés à l'aide du schéma avec lequel ils sont encodés. Vous pouvez également traduire des messages dans 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 compatibles avec toutes les autres révisions, qu'elles soient antérieures ou ultérieures. Cette compatibilité permet d'utiliser n'importe quelle révision comme schéma de lecteur ou de rédacteur.
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 d'écriture.
Il est préférable de mettre en cache l'objet lecteur Avro qui peut analyser les messages pour chaque révision de schéma rencontrée afin de minimiser la latence et le nombre d'appels à l'API GetSchema
.
Le code suivant montre ces fonctions :
Lisez les attributs abordés dans la section précédente pour déterminer la révision du 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 celle-ci.
Analysez le message dans le schéma utilisé par votre abonné.
Go
L'exemple suivant utilise la version majeure de la bibliothèque cliente Go Pub/Sub (v2). Si vous utilisez toujours la bibliothèque v1, consultez le guide de migration vers la v2. Pour consulter la liste des exemples de code de la version 1, consultez les exemples de code obsolètes.
Avant d'essayer cet exemple, suivez les instructions de configuration pour Go du guide de démarrage rapide : Utiliser les 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.