In questa pagina viene spiegato come pubblicare messaggi in argomenti Lite. Puoi pubblicare con la libreria client Pub/Sub Lite per Java.
Dopo aver pubblicato i messaggi e creazione di una sottoscrizione Lite in un argomento Lite, puoi ricevere messaggi da Lite abbonamento.
Formato messaggio
Un messaggio è costituito da campi con i relativi dati e metadati. Specifica nel messaggio uno qualsiasi dei seguenti elementi:
- I dati dei messaggi
- Una chiave di ordinamento
- L'ora di un evento
- Attributi con metadati aggiuntivi
La libreria client assegna automaticamente il messaggio a una partizione e Il servizio Pub/Sub Lite aggiunge i seguenti campi al messaggio:
- Un ID messaggio univoco all'interno della partizione
- Un timestamp che indica quando il servizio Pub/Sub Lite archivia il messaggio in la partizione
Pubblicazione di messaggi
Per pubblicare messaggi, richiedi una connessione in modalità flusso all'argomento Lite e quindi e inviare messaggi tramite la connessione in streaming.
L'esempio seguente mostra come pubblicare messaggi in un argomento Lite:
gcloud
Questo comando richiede Python 3.6 o versioni successive e il comando grpcio Python pacchetto da installare. Per gli utenti di MacOS, Linux e Cloud Shell, esegui:
sudo pip3 install grpcio
export CLOUDSDK_PYTHON_SITEPACKAGES=1
Per pubblicare un messaggio, utilizza gcloud pubsub lite-topics publish :
gcloud pubsub lite-topics publish TOPIC_ID \
--location=LITE_LOCATION \
--message=MESSAGE_DATA
Sostituisci quanto segue:
- TOPIC_ID: l'ID dell'argomento Lite
- LITE_LOCATION: la posizione dell'argomento Lite
- MESSAGE_DATA: una stringa con i dati del messaggio
Vai
Prima di eseguire questo esempio, segui le istruzioni di configurazione di Go in Librerie client Pub/Sub Lite.
Java
Prima di eseguire questo esempio, segui le istruzioni di configurazione di Java riportate in Librerie client Pub/Sub Lite.
Python
Prima di eseguire questo esempio, segui le istruzioni di configurazione di Python in Librerie client Pub/Sub Lite.
La libreria client invia i messaggi e gestisce gli errori in modo asincrono. Se , la libreria client invia di nuovo il messaggio.
- Il servizio Pub/Sub Lite chiude il flusso.
- La libreria client memorizza i messaggi nel buffer e ristabilisce una connessione Argomento Lite.
- La libreria client invia i messaggi in ordine.
Dopo aver pubblicato un messaggio, il servizio Pub/Sub Lite archivia il in una partizione e restituisce l'ID messaggio al publisher.
Utilizzo delle chiavi di ordinamento
Se i messaggi hanno la stessa chiave di ordinamento, la libreria client li assegna alla stessa partizione. La chiave di ordinamento deve essere una stringa di massimo 1024 byte.
La chiave di ordinamento si trova nel
campo key
di un messaggio.
Puoi impostare le chiavi di ordinamento con la libreria client.
gcloud
Questo comando richiede Python 3.6 o versioni successive e il comando grpcio Python pacchetto da installare. Per gli utenti di MacOS, Linux e Cloud Shell, esegui:
sudo pip3 install grpcio
export CLOUDSDK_PYTHON_SITEPACKAGES=1
Per pubblicare un messaggio, utilizza gcloud pubsub lite-topics publish :
gcloud pubsub lite-topics publish TOPIC_ID \
--location=LITE_LOCATION \
--ordering-key=ORDERING_KEY \
--message=MESSAGE_DATA
Sostituisci quanto segue:
- TOPIC_ID: l'ID dell'argomento Lite
- LITE_LOCATION: la posizione dell'argomento Lite
- ORDERING_KEY: una stringa utilizzata per assegnare messaggi alle partizioni
- MESSAGE_DATA: una stringa con i dati del messaggio
Vai
Prima di eseguire questo esempio, segui le istruzioni di configurazione di Go in Librerie client Pub/Sub Lite.
Java
Prima di eseguire questo esempio, segui le istruzioni di configurazione di Java in Librerie client Pub/Sub Lite.
Python
Prima di eseguire questo esempio, segui le istruzioni di configurazione di Python in Librerie client Pub/Sub Lite.
Puoi inviare più messaggi alla stessa partizione utilizzando le chiavi di ordinamento, sottoscrittori ricevono i messaggi in ordine. La libreria del client potrebbe assegnare più chiavi di ordinamento alla stessa partizione.
Imposta l'ora dell'evento
Puoi utilizzare l'ora evento per pubblicare i messaggi Lite. L'ora dell'evento è personalizzata che puoi aggiungere al tuo messaggio.
Puoi impostare il timestamp dell'evento con la libreria client o con gCloud CLI.
Questo comando richiede Python 3.6 o versioni successive e il comando grpcio Python pacchetto da installare. Per gli utenti di MacOS, Linux e Cloud Shell, esegui:
sudo pip3 install grpcio
export CLOUDSDK_PYTHON_SITEPACKAGES=1
Per pubblicare un messaggio, utilizza gcloud pubsub lite-topics publish :
gcloud pubsub lite-topics publish TOPIC_ID \
--location=LITE_LOCATION \
--event-time=EVENT_TIME \
--message=MESSAGE_DATA
Sostituisci quanto segue:
TOPIC_ID: l'ID dell'argomento Lite
LITE_LOCATION: la posizione dell'argomento Lite
EVENT_TIME: un'ora dell'evento specificata dall'utente. Per ulteriori informazioni sui formati dell'ora, esegui
gcloud topic datetimes
.MESSAGE_DATA: una stringa con i dati del messaggio
Utilizzo degli attributi
Gli attributi del messaggio sono coppie chiave-valore con metadati relativi al messaggio. La possono essere stringhe di testo o byte.
Gli attributi si trovano nel
Campo attributes
di un messaggio. Puoi impostare gli attributi con la libreria client.
gcloud
Questo comando richiede Python 3.6 o versioni successive e l'installazione del pacchetto Python grpcio. Per gli utenti di MacOS, Linux e Cloud Shell, esegui:
sudo pip3 install grpcio
export CLOUDSDK_PYTHON_SITEPACKAGES=1
Per pubblicare un messaggio, utilizza gcloud pubsub lite-topics publish :
gcloud pubsub lite-topics publish TOPIC_ID \
--location=LITE_LOCATION \
--message=MESSAGE_DATA \
--attribute=KEY=VALUE,...
Sostituisci quanto segue:
- TOPIC_ID: l'ID dell'argomento Lite
- LITE_LOCATION: la posizione dell'argomento Lite
- MESSAGE_DATA: una stringa con i dati del messaggio
- KEY: la chiave di un attributo del messaggio
- VALUE: il valore della chiave dell'attributo del messaggio
Vai
Prima di eseguire questo esempio, segui le istruzioni di configurazione di Go in Librerie client Pub/Sub Lite.
Java
Prima di eseguire questo esempio, segui le istruzioni di configurazione di Java in Librerie client Pub/Sub Lite.
Python
Prima di eseguire questo esempio, segui le istruzioni di configurazione di Python in Librerie client Pub/Sub Lite.
Gli attributi possono indicare come elaborare un messaggio. I sottoscrittori possono analizzare
campo attributes
di un messaggio ed elabora il messaggio in base al suo
attributi.
Raggruppamento dei messaggi in batch
La libreria client pubblica i messaggi in batch. Per i batch più grandi è necessario meno di risorse di computing, ma aumenta la latenza. Puoi modificare la dimensione del batch con le impostazioni di batch.
La tabella seguente elenca le impostazioni di raggruppamento che puoi configurare:
Impostazione | Descrizione | Predefinito |
---|---|---|
Dimensioni richiesta | La dimensione massima, in byte, del batch. | 3,5 MiB |
Numero di messaggi | Il numero massimo di messaggi in un batch. | 1000 messaggi |
Ritardo nella pubblicazione | La quantità di tempo, in millisecondi, tra l'aggiunta del messaggio a un batch e l'invio del batch all'argomento Lite. | 50 millisecondi |
È possibile configurare le impostazioni di raggruppamento in batch con la libreria client.
Vai
Prima di eseguire questo esempio, segui le istruzioni di configurazione di Go in Librerie client Pub/Sub Lite.
Java
Prima di eseguire questo esempio, segui le istruzioni di configurazione di Java riportate in Librerie client Pub/Sub Lite.
Python
Prima di eseguire questo esempio, segui le istruzioni di configurazione di Python in Librerie client Pub/Sub Lite.
Quando viene avviata un'applicazione publisher, la libreria client crea un batch per ogni partizione in un argomento Lite. Ad esempio, se un argomento Lite ha due partizioni, gli editori creano due batch e inviano ogni batch a una partizione.
Dopo aver pubblicato un messaggio, la libreria client lo memorizza nel buffer fino a quando le dimensioni massime della richiesta, il numero massimo di messaggi o ritardo di pubblicazione.
Ordinamento dei messaggi
Gli argomenti Lite ordinano i messaggi in ogni partizione in base alla data di pubblicazione. Per assegnare messaggi alla stessa partizione, utilizza una chiave di ordinamento.
Pub/Sub Lite consegna i messaggi da una partizione in ordine e i sottoscrittori possono elaborare i messaggi in ordine. Per maggiori dettagli, vedi Ricezione di messaggi.
Idempotenza della pubblicazione
Le librerie client di Pub/Sub Lite supportano la pubblicazione idempotente, dal le seguenti versioni:
- java-pubsublite: versione 1.10.0.
- python-pubsublite: versione 1.8.0.
- google-cloud-go: pubsublite versione 1.7.0.
Se si tenta di nuovo la pubblicazione di un messaggio a causa di errori di rete o del server, archiviati una sola volta. L'idempotenza è garantita solo all'interno della stessa sessione; non può essere garantita se lo stesso messaggio viene ripubblicato utilizzando un nuovo client editore. Non comporta costi di servizio aggiuntivi né aumenta la pubblicazione una latenza di pochi millisecondi.
Abilita o disabilita la pubblicazione idempotente
La pubblicazione idempotente è abilitata per impostazione predefinita nel client Pub/Sub Lite librerie. Può essere disattivato utilizzando le impostazioni del client publisher nei rispettivi libreria client.
Se la pubblicazione idempotente è abilitata, l'offset restituito in un risultato relativo alla pubblicazione
potrebbe essere -1
. Questo valore viene restituito quando il messaggio viene identificato come duplicato di un messaggio già pubblicato correttamente, ma il server non dispone di informazioni sufficienti per restituire l'offset del messaggio al momento della pubblicazione.
I messaggi ricevuti dai sottoscrittori hanno sempre un offset valido.
Risoluzione dei problemi
Duplicati ricevuti
Poiché l'idempotenza è limitata a una singola sessione, potrebbero essere ricevuti duplicati se ricrei il client publisher per pubblicare gli stessi messaggi.
Un client sottoscrittore potrebbe ricevere lo stesso messaggio più volte se le partizioni vengono assegnati automaticamente ai sottoscrittori dal servizio Pub/Sub Lite (l'impostazione predefinita). Un messaggio potrebbe essere recapitato a un altro sottoscrittore quando si verifica una riassegnazione.
Errore del publisher
Lo stato di una sessione del publisher viene sottoposto a garbage collection nel server dopo 7 giorni di inattività. Se una sessione viene ripresa dopo questo periodo di tempo, il cliente publisher termina con un messaggio di errore simile a "Precondizione non riuscita: prevista per pubblicare il numero di sequenza di..." e non accetta nuovi messaggi. Ricrea il client del publisher per risolvere questo errore.