Questo documento mostra come pubblicare messaggi in un argomento con uno schema.
Prima di iniziare
Prima di configurare il flusso di lavoro di pubblicazione, assicurati di aver completato le seguenti attività:
- Comprendere il funzionamento degli schemi Pub/Sub.
- Associa uno schema a un argomento.
Ruoli obbligatori
Per ottenere le autorizzazioni necessarie per pubblicare messaggi in un argomento, chiedi all'amministratore di concederti il ruolo IAM Publisher Pub/Sub (roles/pubsub.publisher
) nell'argomento.
Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.
Potresti anche riuscire a ottenere le autorizzazioni richieste tramite i ruoli personalizzati o altri ruoli predefiniti.
Per creare o aggiornare argomenti e abbonamenti, devi disporre di autorizzazioni aggiuntive.Pubblica i messaggi con uno schema
Puoi pubblicare messaggi in un argomento associato a uno schema. Devi codificare i messaggi nello schema e nel formato che hai specificato quando hai creato l'argomento. Un messaggio corrisponde allo schema associato all'argomento se corrisponde a una delle revisioni dello schema nell'intervallo di revisioni consentito. I messaggi vengono valutati rispetto alle revisioni in ordine dalla revisione consentita più recente fino a quando non viene trovata una corrispondenza o non viene raggiunta la revisione consentita più datata. Pub/Sub aggiunge i seguenti attributi a un messaggio pubblicato correttamente in un argomento associato a uno schema:
googclient_schemaname
: il nome dello schema utilizzato per la convalida.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.
Quando un messaggio non corrisponde a nessuna delle revisioni dello schema consentite dall'argomento, Pub/Sub restituisce un errore INVALID_ARGUMENT
alla richiesta di pubblicazione.
Pub/Sub valuta i messaggi rispetto alle revisioni dello schema solo al momento della pubblicazione. L'esecuzione del commit di una nuova revisione dello schema o la modifica dello schema associato a un argomento dopo la pubblicazione di un messaggio non comporta la rivalutazione del messaggio né la modifica di nessuno degli attributi del messaggio dello schema allegato.
Puoi pubblicare messaggi in un argomento con uno schema associato in un progetto Google Cloud utilizzando la console Google Cloud, gcloud CLI, l'API Pub/Sub o le librerie client di Cloud.
gcloud
In the Trusted Cloud console, activate Cloud Shell.
At the bottom of the Trusted Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
Pubblica un messaggio di esempio utilizzando il comando gcloud pubsub topics publish.
gcloud pubsub topics publish TOPIC_ID \ --message=MESSAGE
Sostituisci quanto segue:
TOPIC_ID: il nome dell'argomento che hai già creato.
MESSAGE: Messaggio pubblicato nell'argomento. Un messaggio di esempio potrebbe essere
{"name": "Alaska", "post_abbr": "AK"}
.
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
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.
Avro ProtoNode.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 protocolloPassaggi successivi
Per limitare le località in cui Pub/Sub archivia i dati dei messaggi, consulta Limitazione delle località delle risorse Pub/Sub.
Per saperne di più sulla ricezione dei messaggi, vedi Scegliere un tipo di abbonamento.