Questo documento fornisce informazioni sulla pubblicazione di messaggi.
Un'applicazione del publisher crea e invia messaggi a un argomento. Pub/Sub offre la consegna dei messaggi "at-least-once" e il "best effort" agli abbonati esistenti.
Il flusso generale per un'applicazione di editore è il seguente:
- Crea un messaggio contenente i tuoi dati.
- Invia una richiesta al server Pub/Sub per pubblicare il messaggio all'argomento specificato.
Prima di iniziare
Prima di configurare il flusso di lavoro di pubblicazione, assicurati di aver completato quanto segue attività:
- Scopri di più sul flusso di lavoro di pubblicazione.
- Crea un argomento.
- Scegliere e creare un abbonamento.
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
) per l'argomento.
Per saperne di più sulla concessione dei ruoli, consulta Gestire l'accesso a progetti, cartelle e organizzazioni.
Potresti anche riuscire a ottenere le autorizzazioni richieste tramite i ruoli personalizzati o altri ruoli predefiniti.
Devi avere autorizzazioni aggiuntive per creare o aggiornare argomenti e sottoscrizioni.
Formato messaggio
Un messaggio è composto da campi che contengono i relativi dati e metadati. Specifica in almeno uno dei seguenti elementi nel messaggio:
- I dati dei messaggi
- Una chiave di ordinamento
- Attributi con metadati aggiuntivi
Il servizio Pub/Sub aggiunge i seguenti campi al messaggio:
- Un ID messaggio univoco per l'argomento
- Timestamp della ricezione del messaggio da parte del servizio Pub/Sub
Per scoprire di più sui messaggi, consulta Formato dei messaggi.
pubblica dei messaggi
Puoi pubblicare messaggi con la console Google Cloud, Google Cloud CLI, l'API Pub/Sub, e le librerie client. Le librerie client possono pubblicare messaggi in modo asincrono.
Gli esempi riportati di seguito mostrano come pubblicare un messaggio in un argomento.
Console
Per pubblicare un messaggio:
Nella console Google Cloud, vai alla pagina Argomenti Pub/Sub.
Fai clic sull'ID argomento.
Nella pagina Dettagli dell'argomento, fai clic su Pubblica messaggio in Messaggi.
Inserisci i dati del messaggio nel campo Corpo del messaggio.
Fai clic su Pubblica.
gcloud
Per pubblicare un messaggio, utilizza gcloud pubsub topics publish :
gcloud pubsub topics publish TOPIC_ID \ --message=MESSAGE_DATA \ [--attribute=KEY="VALUE",...]
Sostituisci quanto segue:
- TOPIC_ID: l'ID dell'argomento
- MESSAGE_DATA: una stringa con i dati del messaggio
- KEY: la chiave di un attributo messaggio
- VALUE: il valore della chiave dell'attributo del messaggio
REST
Per pubblicare un messaggio, invia una richiesta POST come la seguente:
POST https://pubsub.googleapis.com/v1/projects/PROJECT_ID/topics/TOPIC_ID:publish Content-Type: application/json Authorization: Bearer $(gcloud auth application-default print-access-token)
Sostituisci quanto segue:
- PROJECT_ID: l'ID del progetto con l'argomento
- TOPIC_ID: l'ID dell'argomento
Specifica i seguenti campi nel corpo della richiesta:
{ "messages": [ { "attributes": { "KEY": "VALUE", ... }, "data": "MESSAGE_DATA", } ] }
Sostituisci quanto segue:
- KEY: la chiave di un attributo messaggio
- VALUE: il valore della chiave dell'attributo messaggio
- MESSAGE_DATA: una stringa con codifica base64 con i dati del messaggio
Il messaggio deve contenere un campo dati non vuoto o almeno un attributo.
Se la richiesta ha esito positivo, la risposta è un oggetto JSON con il messaggio ID. L'esempio seguente è una risposta con un ID messaggio:
{ "messageIds": [ "19916711285", ] }
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++.
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#.
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.
Node.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.
Node.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.
PHP
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.
Python
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.
Ruby
Prima di provare questo esempio, segui le istruzioni di configurazione di Ruby in Guida rapida all'utilizzo delle librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Ruby Pub/Sub.
Dopo aver pubblicato un messaggio, il servizio Pub/Sub restituisce l'ID messaggio al publisher.
Utilizza gli attributi per pubblicare un messaggio
Puoi incorporare attributi personalizzati come metadati nei messaggi Pub/Sub. Gli attributi vengono utilizzati per fornire ulteriori informazioni sul messaggio, come priorità, origine o destinazione. Gli attributi possono essere utilizzati anche per filtrare i messaggi nell'abbonamento.
Segui queste linee guida per l'utilizzo degli attributi nei messaggi:
Gli attributi possono essere stringhe di testo o stringhe di byte.
Puoi avere al massimo 100 attributi per messaggio.
Le chiavi degli attributi non devono iniziare con
goog
e non devono superare i 256 byte.I valori degli attributi non devono superare i 1024 byte.
Lo schema del messaggio può essere rappresentato come segue:
{ "data": string, "attributes": { string: string, ... }, "messageId": string, "publishTime": string, "orderingKey": string }
Per i duplicati lato pubblicazione, è possibile vedere valori publishTime
diversi per lo stesso messaggio originale lato client, anche con lo stesso messageId
.
Lo schema JSON PubsubMessage
viene pubblicato nell'ambito della documentazione di REST e RPC. Per i timestamp degli eventi puoi utilizzare attributi personalizzati.
I seguenti esempi mostrano come pubblicare un messaggio con attributi a un argomento.
Console
Per pubblicare un messaggio con attributi:
Nella console Google Cloud, vai alla pagina Topic.
Fai clic sull'argomento per il quale vuoi pubblicare messaggi.
Nella pagina dei dettagli dell'argomento, fai clic su Messaggi.
Fai clic su Pubblica messaggio.
Nel campo Corpo del messaggio, inserisci i dati del messaggio.
In Attributi del messaggio, fai clic su Aggiungi un attributo.
Inserisci una coppia chiave-valore.
Aggiungi altri attributi, se necessario.
Fai clic su Pubblica.
gcloud
gcloud pubsub topics publish my-topic --message="hello" \ --attribute="origin=gcloud-sample,username=gcp,eventTime='2021-01-01T12:00:00Z'"
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++.
C#
Prima di provare questo esempio, segui le istruzioni di configurazione C# in Guida rapida all'utilizzo delle librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Pub/Sub C#.
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.
Node.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.
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.
Ruby
Prima di provare questo esempio, segui le istruzioni di configurazione di Ruby in Guida rapida all'utilizzo delle librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Ruby Pub/Sub.
Utilizzare le chiavi di ordinamento per pubblicare un messaggio
Per ricevere i messaggi in ordine nei client sottoscrittore, devi configurare i client publisher in modo che pubblichino i messaggi con chiavi di ordinamento.
Per comprendere il concetto di chiavi di ordinamento, consulta Ordinare i messaggi.
Di seguito è riportato un elenco di considerazioni chiave per la messaggistica ordinata per i publisher clienti:
Ordinamento in un singolo client publisher: quando un singolo client publisher pubblica messaggi con la stessa chiave di ordinamento nella stessa regione, il client sottoscrittore li riceve nell'ordine esatto in cui sono stati pubblicati. Ad esempio, se un client publisher pubblica i messaggi 1, 2 e 3 con la chiave di ordinamento A, il client subscriber li riceve nell'ordine 1, 2, 3.
Ordine tra più clienti publisher: l'ordine dei messaggi ricevuti. da parte dei clienti sottoscrittori è coerente con l'ordine in cui pubblicati nella stessa regione, anche quando più clienti di publisher utilizzano con la stessa chiave di ordinamento. Tuttavia, i clienti publisher non hanno conoscenza di questo ordine.
Ad esempio, se i clienti publisher X e Y pubblicano ciascuno messaggi con la chiave di ordinamento A e il messaggio di X viene ricevuto da Pub/Sub prima di quello di Y, tutti i clienti subscriber ricevono il messaggio di X prima di quello di Y. Se è richiesto un ordinamento rigoroso dei messaggi su diversi client editore, questi client devono implementare un ulteriore meccanismo di coordinamento per assicurarsi di non pubblicare contemporaneamente messaggi con la stessa chiave di ordinamento. Ad esempio, un servizio di chiusura può essere utilizzata per mantenere la proprietà di una chiave di ordinamento durante la pubblicazione.
Ordine in più regioni: la garanzia di consegna dell'ordine si applica solo quando le pubblicazioni di una chiave di ordinamento si trovano nella stessa regione. Se la tua applicazione editore pubblica messaggi con la stessa chiave di ordinamento in regioni diverse, l'ordine non può essere applicato a queste pubblicazioni. Gli abbonati possono collegarsi a qualsiasi regione e la garanzia di ordinamento viene comunque mantenuta.
Quando esegui l'applicazione in Google Cloud, per impostazione predefinita si connette all'endpoint Pub/Sub nella stessa regione. Di conseguenza, l'esecuzione dell'applicazione in una singola regione Google Cloud in genere garantisce l'interazione con un singolo regione.
Quando esegui l'applicazione del publisher al di fuori in Google Cloud o in più regioni, puoi garantire connettersi a una singola regione utilizzando un endpoint di località e configurare il client Pub/Sub. Tutti gli endpoint posizione per Pub/Sub rimandano a singole regioni. Per saperne di più sugli endpoint geografici, consulta Endpoint Pub/Sub. Per un elenco di tutti gli endpoint geografici per Pub/Sub, consulta Elenco di endpoint geografici.
Errori di pubblicazione: quando la pubblicazione con una chiave di ordinamento non va a buon fine, in coda messaggi con la stessa chiave di ordinamento nel publisher hanno esito negativo, inclusi i messaggi richieste di pubblicazione di questa chiave di ordinamento. Devi riprendere la pubblicazione con e ordinare le chiavi quando si verificano questi errori. Per un esempio di ripristino pubblicazione, vedi Ripetere le richieste con chiavi di ordinamento.
Puoi pubblicare messaggi con chiavi di ordinamento utilizzando la console Google Cloud, Google Cloud CLI, l'API Pub/Sub o le librerie client.
Console
Per pubblicare un messaggio con attributi:
Nella console Google Cloud, vai alla pagina Argomenti.
Fai clic sull'argomento per cui vuoi pubblicare i messaggi.
Nella pagina dei dettagli dell'argomento, fai clic su Messaggi.
Fai clic su Pubblica messaggio.
Nel campo Corpo del messaggio, inserisci i dati del messaggio.
Nel campo Ordinamento dei messaggi, inserisci una chiave di ordinamento.
Fai clic su Pubblica.
gcloud
Per pubblicare un messaggio con una chiave di ordinamento, utilizza la funzione
gcloud pubsub topics publish
e il flag --ordering-key
:
gcloud pubsub topics publish TOPIC_ID \ --message=MESSAGE_DATA \ --ordering-key=ORDERING_KEY
Sostituisci quanto segue:
- TOPIC_ID: l'ID dell'argomento
- MESSAGE_DATA: una stringa con i dati del messaggio
- ORDERING_KEY: una stringa con una chiave di ordinamento
REST
Per pubblicare un messaggio con una chiave di ordinamento, invia una richiesta POST come la seguente:
POST https://pubsub.googleapis.com/v1/projects/PROJECT_ID/topics/TOPIC_ID:publish Content-Type: application/json Authorization: Bearer $(gcloud auth application-default print-access-token)
Sostituisci quanto segue:
- PROJECT_ID: l'ID del progetto con l'argomento
- TOPIC_ID: l'ID dell'argomento
Specifica i seguenti campi nel corpo della richiesta:
{ "messages": [ { "attributes": { "KEY": "VALUE", ... }, "data": "MESSAGE_DATA", "ordering_key": "ORDERING_KEY", } ] }
Sostituisci quanto segue:
- KEY: la chiave di un attributo del messaggio
- VALUE: il valore della chiave dell'attributo messaggio
- MESSAGE_DATA: una stringa con codifica base64 con i dati del messaggio
- ORDERING_KEY: una stringa con una chiave di ordinamento
Il messaggio deve contenere un campo dati non vuoto o almeno un attributo.
Se la richiesta ha esito positivo, la risposta è un oggetto JSON con il messaggio ID. L'esempio seguente è una risposta con un ID messaggio:
{ "messageIds": [ "19916711285", ] }
C++
Prima di provare questo esempio, segui le istruzioni per la configurazione di C++ in Guida rapida all'utilizzo delle librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Pub/Sub C++.
C#
Prima di provare questo esempio, segui le istruzioni di configurazione C# in Guida rapida all'utilizzo delle librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API C# Pub/Sub.
Vai
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.
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.
Node.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.
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 Python Pub/Sub.
Ruby
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.
Monitorare un publisher
Cloud Monitoring fornisce una serie di metriche per monitorare gli argomenti.
Per monitorare un argomento e mantenere un publisher in salute, consulta Mantenere un publisher in salute.
Passaggi successivi
Per limitare le località in cui Pub/Sub archivia i dati dei messaggi, consulta Limitare le località delle risorse Pub/Sub.
Per pubblicare messaggi con schema, consulta la Panoramica degli schemi.
Per informazioni su come configurare le opzioni di consegna avanzate, consulta quanto segue: