Gli argomenti possono utilizzare schemi per definire un formato che i messaggi devono seguire. Quando ti abboni a un argomento con uno schema, i messaggi inviati all'abbonato sono garantiti come validi. Questi messaggi sono conformi al tipo e alla codifica specificati nelle impostazioni dello schema associato 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, che può essere JSON o BINARY.googclient_schemarevisionid
: l'ID revisione dello schema utilizzato per analizzare e convalidare il messaggio. A ogni revisione è associato un ID revisione univoco. L'ID revisione è un UUID di otto caratteri generato automaticamente. Se la revisione viene eliminata, l'ID è_deleted-schema-revision_
.
Per saperne di più sugli schemi, consulta la sezione Panoramica dello schema.
Esempi di codice per la sottoscrizione di argomenti associati a uno schema
Questi esempi mostrano come elaborare i messaggi quando ti abboni a argomenti configurati con uno schema.
C++
Prima di provare questo esempio, segui le istruzioni di configurazione di C++ 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 di C# nella guida rapida all'utilizzo delle librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Pub/Sub C#.
Avro ProtoVai
L'esempio seguente utilizza la versione principale della libreria client Go Pub/Sub (v2). Se utilizzi ancora la libreria v1, consulta la guida alla migrazione alla v2. Per visualizzare un elenco di esempi di codice della versione 1, consulta gli esempi di codice ritirati.
Prima di provare questo esempio, segui le istruzioni di configurazione di Go nella guida rapida all'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API Pub/Sub Go.
Avro ProtoJava
L'esempio seguente utilizza la versione principale della libreria client Go Pub/Sub (v2). Se utilizzi ancora la libreria v1, consulta la guida alla migrazione alla v2. Per visualizzare un elenco di esempi di codice della versione 1, consulta gli esempi di codice ritirati.
Prima di provare questo esempio, segui le istruzioni di configurazione di Go nella guida rapida all'utilizzo delle librerie client. Per saperne di più, 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 nella Guida rapida all'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API Pub/Sub Node.js.
Avro Buffer di protocolloNode.js
Prima di provare questo esempio, segui le istruzioni di configurazione di Node.js nella Guida rapida all'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API Pub/Sub Node.js.
Avro Buffer di protocolloPHP
Prima di provare questo esempio, segui le istruzioni di configurazione di PHP nella guida rapida all'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API Pub/Sub PHP.
Avro Buffer di protocolloPython
Prima di provare questo esempio, segui le istruzioni di configurazione di Python nella guida rapida all'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API Pub/Sub Python.
Avro Buffer di protocolloRuby
Il seguente esempio utilizza la libreria client Ruby Pub/Sub v3. Se utilizzi ancora la libreria v2, consulta la guida alla migrazione alla v3. Per visualizzare un elenco di esempi di codice Ruby v2, consulta gli esempi di codice ritirati.
Prima di provare questo esempio, segui le istruzioni di configurazione di Ruby nella guida rapida all'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API Pub/Sub Ruby.
Avro Buffer di protocolloIscriviti 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 garantisce che tutte le revisioni dello schema siano 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 dal tuo abbonato, potresti dover recuperare lo schema originale e passarlo come schema del writer.
È consigliabile memorizzare nella cache l'oggetto lettore Avro che può analizzare i messaggi per ogni revisione dello schema rilevata per ridurre al minimo la latenza e il numero di chiamate all'API GetSchema
.
Il seguente codice 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 questa revisione.
Analizza il messaggio nello schema utilizzato dal tuo abbonato.
Vai
L'esempio seguente utilizza la versione principale della libreria client Go Pub/Sub (v2). Se utilizzi ancora la libreria v1, consulta la guida alla migrazione alla v2. Per visualizzare un elenco di esempi di codice della versione 1, consulta gli esempi di codice ritirati.
Prima di provare questo esempio, segui le istruzioni di configurazione di Go nella guida rapida all'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API Pub/Sub Go.
Java
Prima di provare questo esempio, segui le istruzioni di configurazione di Java nella guida rapida all'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API Java di Pub/Sub.
Python
Prima di provare questo esempio, segui le istruzioni di configurazione di Python nella guida rapida all'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API Pub/Sub 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, vedi Creare e gestire ruoli IAM personalizzati.