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 respectent les 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 examinant 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 BINAIRE.googclient_schemarevisionid
: ID de révision du schéma utilisées pour analyser et valider le message. Chaque révision dispose d'un ID de révision unique qui lui est associé. L'ID de révision est un UUID à huit caractères généré automatiquement.
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 un 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 exige que les messages soient analysés à l'aide du schéma avec lequel ils sont encodés. Vous pouvez également traduire les messages dans un schéma différent en procédant comme suit : à l'aide de la fonctionnalité Résolution de schéma Avro.
Pub/Sub veille à ce que toutes les révisions de schéma soient transférées rétrocompatible avec toutes les autres révisions. Cette compatibilité permet à tout révision à utiliser 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 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.
Extrayez la révision du schéma et mettez en cache un lecteur généré avec celui-ci.
Analyser le message selon 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.