Gli argomenti possono utilizzare schemi per definire un formato che i relativi messaggi devono seguire. Quando ti abboni a un argomento con uno schema, i messaggi inviati al sottoscrittore 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. 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 scoprire di più sugli schemi, consulta la sezione Panoramica dello schema.
Esempi di codice per l'iscrizione agli 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 Pub/Sub C#.
Avro ProtoVai
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.
Avro ProtoJava
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.
Avro Protocol BufferNode.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 Node.js.
Avro Protocol BufferNode.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 Node.js.
Avro Buffer di protocolloPHP
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 riportate nella guida rapida all'utilizzo delle librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Pub/Sub per Python.
Avro Protocol BufferRuby
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 Protocol BufferIscriverti 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 le revisioni precedenti e successive. 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 riportate nella 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 a un account di servizio uno dei seguenti ruoli predefiniti:
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 i ruoli IAM personalizzati.