Questa pagina spiega come ricevere messaggi dagli abbonamenti Lite. Puoi ricevere messaggi con la libreria client Pub/Sub Lite per Java.
Le sottoscrizioni Lite collegano gli argomenti Lite alle applicazioni dei sottoscrittori, che ricevono i messaggi dalle sottoscrizioni Lite. Gli abbonati ricevono tutti i messaggi inviati dalle applicazioni del publisher all'argomento Lite, inclusi i messaggi inviati dai publisher prima della creazione dell'abbonamento Lite.
Prima di ricevere messaggi da una sottoscrizione Lite, crea un argomento Lite, crea una sottoscrizione Lite all'argomento Lite e pubblica messaggi nell'argomento Lite.
Ricezione di messaggi
Per ricevere messaggi da un abbonamento Lite, richiedi i messaggi dall'abbonamento Lite. La libreria client si connette automaticamente alle partizioni nell'argomento Lite associato all'abbonamento Lite. Se viene eseguito il caricamento di più client sottoscrittore, i messaggi verranno distribuiti a tutti i client. Il numero di partizioni nell'argomento determina il numero massimo di client sottoscrittori che possono connettersi contemporaneamente a una sottoscrizione.
L'inizializzazione e l'inizio della ricezione dei messaggi da parte degli abbonati potrebbero richiedere fino a un minuto. Dopo l'inizializzazione, i messaggi vengono ricevuti con una latenza minima.
L'esempio seguente mostra come ricevere messaggi dagli abbonamenti Lite:
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 ricevere i messaggi, utilizza il comando gcloud pubsub lite-subscriptions subscribe:
gcloud pubsub lite-subscriptions subscribe SUBSCRIPTION_ID \
--location=LITE_LOCATION \
--auto-ack
Sostituisci quanto segue:
- SUBSCRIPTION_ID: l'ID dell'abbonamento Lite
- LITE_LOCATION: la posizione dell'abbonamento Lite
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 stabilisce connessioni di streaming bidirezionali con ciascuna delle partizioni nell'argomento Lite.
L'abbonato richiede connessioni alle partizioni.
Il servizio Pub/Sub Lite consegna i messaggi all'abbonato.
Dopo aver elaborato il messaggio, l'abbonato deve riconoscerlo. La libreria client elabora e conferma i messaggi in modo asincrono in un callback. Per limitare il numero di messaggi non confermati che l'abbonato può memorizzare in memoria, configura le impostazioni di controllo del flusso.
Se più sottoscrittori ricevono messaggi dalla stessa sottoscrizione Lite, il servizio Pub/Sub Lite connette ogni sottoscrittore a una proporzione uguale di partizioni. Ad esempio, se due sottoscrittori utilizzano la stessa sottoscrizione Lite e questa è collegata a un argomento Lite con due partizioni, ogni sottoscrittore riceve i messaggi da una delle partizioni.
Confermare i messaggi
Per confermare un messaggio, invia un messaggio di conferma all'abbonamento Lite.
Vai
Per inviare un messaggio di conferma, utilizza il metodo Message.Ack()
.
Java
Per inviare un messaggio di conferma, utilizza il metodo
AckReplyConsumer.ack()
.
Python
Per inviare un messaggio di conferma, utilizza il metodo Message.ack()
.
Gli abbonati devono confermare ogni messaggio. Gli abbonati ricevono prima il messaggio senza ACK meno recente, seguito da ogni messaggio successivo. Se un abbonato salta un messaggio, conferma i messaggi successivi e si ricollega, riceve il messaggio non confermato e ogni messaggio confermato successivo.
Le sottoscrizioni Lite non hanno una scadenza per la conferma di ricezione e il servizio Pub/Sub Lite non recapita i messaggi non confermati tramite una connessione di streaming aperta.
Utilizzo del controllo del flusso
Dopo che il servizio Pub/Sub Lite ha inviato i messaggi ai sottoscrittori, questi ultimi memorizzano in memoria i messaggi non confermati. Puoi limitare il numero di messaggi in sospeso che gli abbonati possono memorizzare in memoria utilizzando le impostazioni di controllo del flusso. Le impostazioni di controllo del flusso si applicano a ogni partizione da cui un abbonato riceve i messaggi.
Puoi configurare le seguenti impostazioni di controllo del flusso:
- Dimensioni dei messaggi in attesa. La dimensione massima, in byte, dei messaggi in sospeso. La dimensione massima deve essere maggiore delle dimensioni del messaggio più grande.
- Numero di messaggi. Il numero massimo di messaggi in sospeso.
Le dimensioni di un messaggio si trovano nel
campo size_bytes
.
Puoi configurare le impostazioni di controllo flusso con la libreria client.
Vai
Per configurare le impostazioni di controllo del flusso, passa ReceiveSettings
quando chiami pscompat.NewSubscriberClientWithSettings
. In ReceiveSettings
puoi impostare i seguenti parametri:
MaxOutstandingMessages
MaxOutstandingBytes
Per un esempio, consulta questo esempio di controllo del flusso.
Java
Per configurare le impostazioni di controllo flusso, utilizza i seguenti metodi nella classe
FlowControlRequest.Builder
:
Python
Per configurare le impostazioni di controllo flusso, imposta i seguenti parametri nella classe
FlowControlSettings
:
bytes_outstanding
messages_outstanding
Ad esempio, se il numero massimo di messaggi è 100 e l'abbonato si connette a 10 partizioni, non può ricevere più di 100 messaggi da nessuna delle 10 partizioni. Il numero totale di messaggi in sospeso potrebbe essere superiore a 100, ma l'abbonato non può archiviare più di 100 messaggi da ogni partizione.