Gli argomenti possono utilizzare schemi per definire un formato che i loro messaggi devono seguire. Quando esegui la sottoscrizione a un argomento con uno schema, i messaggi inviati al sottoscrittore sono garantiti come messaggi validi. Questi messaggi sono conformi al tipo e alla codifica specificati nelle impostazioni dello schema associate all'argomento.
L'abbonato può determinare le impostazioni dello schema associate a un argomento esaminando i seguenti attributi:
googclient_schemaname
: il nome dello schema utilizzato per la convalida. Se lo schema viene eliminato, il nome è_deleted-schema_
.googclient_schemaencoding
: la codifica del messaggio (JSON) o BINARIO.googclient_schemarevisionid
: l'ID revisione dello schema usati per analizzare e convalidare il messaggio. A ogni revisione è associato un ID revisione univoco. L'ID revisione è un UUID di otto caratteri generato automaticamente.
Per scoprire di più sugli schemi, consulta la sezione Panoramica dello schema.
Esempi di codice per l'iscrizione ad argomenti associati a uno schema
Questi esempi mostrano come elaborare i messaggi quando ti abboni ai temi configurati con lo schema.
C++
Prima di provare questo esempio, segui le istruzioni di configurazione C++ riportate nella guida rapida all'utilizzo delle librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Pub/Sub C++.
Avro ProtoC#
Prima di provare questo esempio, segui le istruzioni di configurazione C# riportate nella guida rapida all'utilizzo delle librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API C# Pub/Sub.
Avro ProtoVai
Prima di provare questo esempio, segui le istruzioni di configurazione di Go in Guida rapida all'utilizzo delle librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Pub/Sub Go.
Avro ProtoJava
Prima di provare questo esempio, segui le istruzioni di configurazione di Go in Guida rapida all'utilizzo delle librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Pub/Sub Go.
Avro Buffer di protocolloNode.js
Prima di provare questo esempio, segui le istruzioni di configurazione di Node.js riportate nella Guida rapida all'utilizzo delle librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Pub/Sub per Node.js.
Avro Protocol BufferNode.js
Prima di provare questo esempio, segui le istruzioni di configurazione di Node.js in Guida rapida all'utilizzo delle librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Node.js Pub/Sub.
Avro Protocol BufferPHP
Prima di provare questo esempio, segui le istruzioni di configurazione di PHP riportate nella guida rapida all'utilizzo delle librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API PHP Pub/Sub.
Avro Protocol BufferPython
Prima di provare questo esempio, segui le istruzioni di configurazione di Python in Guida rapida all'utilizzo delle librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Pub/Sub per Python.
Avro Buffer di protocolloRuby
Prima di provare questo esempio, segui le istruzioni di configurazione di Ruby riportate nella guida rapida all'utilizzo delle librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Ruby Pub/Sub.
Avro Buffer di protocolloAbbonarsi a un argomento associato a uno schema Avro con revisioni
Avro richiede che i messaggi vengano analizzati utilizzando lo schema con cui sono codificati. Puoi anche tradurre i messaggi in uno schema diverso utilizzando la risoluzione dello schema Avro.
Pub/Sub assicura che tutte le revisioni dello schema siano inoltrate compatibili con tutte le altre revisioni. Questa compatibilità consente di utilizzare qualsiasi revisione come schema di lettura o scrittura.
Quando analizzi un messaggio codificato con una revisione dello schema diversa da quella utilizzata dall'abbonato, potresti dover recuperare lo schema originale e passarlo come schema dell'autore.
È preferibile memorizzare nella cache l'oggetto di lettura Avro che può analizzare i messaggi per ogni revisione dello schema rilevata al fine di ridurre al minimo la latenza e il numero di chiamate all'API GetSchema
.
Il codice seguente mostra queste funzioni:
Leggi gli attributi descritti nella sezione precedente per determinare quale revisione dello schema viene utilizzata per codificare il messaggio.
Recupera la revisione dello schema e memorizza nella cache un lettore generato con lo schema.
Analizza il messaggio nello schema utilizzato dall'abbonato.
Vai
Prima di provare questo esempio, segui le istruzioni di configurazione di Go riportate nella guida rapida all'utilizzo delle librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Pub/Sub Go.
Java
Prima di provare questo esempio, segui le istruzioni di configurazione di Java in Guida rapida all'utilizzo delle librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Java Pub/Sub.
Python
Prima di provare questo esempio, segui le istruzioni di configurazione di Python riportate nella guida rapida all'utilizzo delle librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Pub/Sub per Python.
Ruoli obbligatori
Per ottenere le autorizzazioni necessarie per convalidare un messaggio in base a uno schema, completa uno dei seguenti passaggi:
- Concedi uno dei seguenti ruoli predefiniti a un account di servizio:
roles/pubsub.admin
,roles/pubsub.editor
oroles/pubsub.viewer
. Crea un ruolo personalizzato per un account di servizio e aggiungi le seguenti autorizzazioni
pubsub.schemas.validate
epubsub.schemas.get
.Per scoprire di più sui ruoli personalizzati, consulta Creare e gestire i ruoli IAM personalizzati.