Gli argomenti possono utilizzare gli 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 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 BINARY.googclient_schemarevisionid: l'ID revisione dello schema utilizzato per analizzare e convalidare il messaggio. Ogni revisione ha un ID revisione univoco associato. 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 panoramica degli schemi.
Esempi di codice per l'abbonamento ad argomenti associati a uno schema
Questi esempi mostrano come elaborare i messaggi quando ti abboni a argomenti configurati con lo schema.
C++
Prima di provare questo esempio, segui le istruzioni di configurazione di C++ in Guida rapida all'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API Pub/Sub C++ .
Avro ProtoC#
Prima di provare questo esempio, segui le istruzioni di configurazione di C# in Guida rapida all'utilizzo delle librerie client. Per saperne di più, 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 deprecati.
Prima di provare questo esempio, segui le istruzioni di configurazione di Go in 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 deprecati.
Prima di provare questo esempio, segui le istruzioni di configurazione di Go in 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 in 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 in 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 in 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 in 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
L'esempio seguente 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 deprecati.
Prima di provare questo esempio, segui le istruzioni di configurazione di Ruby in Guida rapida all'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API Pub/Sub Ruby.
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 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 dall'abbonato, potresti dover recuperare lo schema originale e passarlo come schema di scrittura.
Per ridurre al minimo la latenza e il numero di chiamate all'API GetSchema, è consigliabile memorizzare nella cache l'oggetto di lettura Avro in grado di analizzare i messaggi per ogni revisione dello schema rilevata.
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 essa.
Analizza il messaggio nello schema utilizzato dall'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 deprecati.
Prima di provare questo esempio, segui le istruzioni di configurazione di Go in 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 in Guida rapida all'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API Pub/Sub Java.
Python
Prima di provare questo esempio, segui le istruzioni di configurazione di Python in 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 rispetto a uno schema, completa uno dei seguenti passaggi:
- Concedi uno dei seguenti ruoli predefiniti a un account di servizio:
roles/pubsub.admin,roles/pubsub.editororoles/pubsub.viewer. Crea un ruolo personalizzato per un account di servizio e aggiungi le seguenti autorizzazioni
pubsub.schemas.validateepubsub.schemas.get.Per saperne di più sui ruoli personalizzati, consulta Creare e gestire ruoli IAM personalizzati.