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 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 de 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 afficher la liste des exemples de code v1, consultez la section Exemples de code obsolètes.
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 de 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 afficher la liste des exemples de code v1, consultez la section Exemples de code obsolètes.
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 de 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 de 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 de 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 de 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 la section Exemples de code obsolètes.
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 de 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 en utilisant la résolution de schéma Avro.
Pub/Sub garantit que toutes les révisions de schéma sont compatibles avec toutes les autres révisions. Cette compatibilité permet d'utiliser n'importe quelle révision comme schéma de lecteur ou d'écriture.
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 réduire la latence et le nombre d'appels à l'API GetSchema.
Le code suivant montre ces fonctions :
Lire les attributs abordés dans la section précédente pour déterminer la révision de schéma utilisée pour encoder le message.
Récupérer la révision de schéma et mettre en cache un lecteur généré avec celle-ci.
Analyser 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 afficher la liste des exemples de code v1, consultez la section Exemples de code obsolètes.
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 de 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 de 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 de l'une des manières suivantes :
- Attribuez l'un des rôles prédéfinis suivants à un compte de service :
roles/pubsub.admin,roles/pubsub.editorouroles/pubsub.viewer. Créez un rôle personnalisé pour un compte de service et ajoutez les autorisations suivantes :
pubsub.schemas.validateetpubsub.schemas.get.Pour en savoir plus sur les rôles personnalisés, consultez la page Créer et gérer des rôles IAM personnalisés.