In questa pagina viene spiegato come ricevere messaggi dalle sottoscrizioni Lite. Puoi ricevere messaggi con la libreria client Pub/Sub Lite per Java.
Le sottoscrizioni Lite collegano gli argomenti Lite alle applicazioni dei sottoscrittori; i sottoscrittori ricevono messaggi dalle sottoscrizioni Lite. I sottoscrittori ricevono ogni messaggio che le applicazioni del publisher inviano all'argomento Lite, inclusi i messaggi che i publisher inviano prima di creare la sottoscrizione Lite.
Prima di ricevere messaggi da una sottoscrizione Lite, crea un argomento Lite, crea una sottoscrizione Lite per l'argomento Lite e pubblica messaggi nell'argomento Lite.
Ricezione di messaggi
Per ricevere messaggi da una sottoscrizione Lite, richiedi i messaggi dalla sottoscrizione Lite. La libreria client si connette automaticamente alle partizioni nell'argomento Lite collegato alla sottoscrizione Lite. Se più di un client sottoscrittore è verificato, i messaggi verranno distribuiti tra 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 la ricezione dei messaggi da parte dei sottoscrittori potrebbe richiedere fino a un minuto. Dopo l'inizializzazione, i messaggi vengono ricevuti con una latenza minima.
L'esempio seguente mostra come ricevere messaggi dalle sottoscrizioni 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 della sottoscrizione Lite
- LITE_LOCATION: la località della sottoscrizione Lite
Go
Prima di eseguire questo esempio, segui le istruzioni di configurazione di Go nelle librerie client di Pub/Sub Lite.
Java
Prima di eseguire questo esempio, segui le istruzioni di configurazione di Java nelle librerie client di Pub/Sub Lite.
Python
Prima di eseguire questo esempio, segui le istruzioni di configurazione di Python nelle librerie client di Pub/Sub Lite.
La libreria client stabilisce connessioni di flusso bidirezionali a ciascuna partizione nell'argomento Lite.
Il sottoscrittore richiede le connessioni alle partizioni.
Il servizio Pub/Sub Lite consegna i messaggi al sottoscrittore.
Dopo che il sottoscrittore ha elaborato il messaggio, quest'ultimo 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 il sottoscrittore può archiviare 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 stessa proporzione di partizioni. Ad esempio, se due sottoscrittori utilizzano la stessa sottoscrizione Lite e la sottoscrizione Lite è collegata a un argomento Lite con due partizioni, ogni sottoscrittore riceve i messaggi da una delle partizioni.
Conferma dei messaggi
Per confermare un messaggio, invia una conferma alla sottoscrizione Lite.
Go
Per inviare una conferma, utilizza il metodo Message.Ack()
.
Java
Per inviare una conferma, utilizza il metodo AckReplyConsumer.ack()
.
Python
Per inviare una conferma, utilizza il metodo Message.ack()
.
I sottoscrittori devono confermare ogni messaggio. I sottoscrittori ricevono prima il messaggio non confermato meno recente, seguito da ogni messaggio successivo. Se un sottoscrittore salta un messaggio, conferma i messaggi successivi e poi si riconnette, il sottoscrittore riceve il messaggio non confermato e ogni successivo messaggio confermato.
Le sottoscrizioni Lite non hanno una scadenza di conferma e il servizio Pub/Sub Lite non recapita nuovamente messaggi non confermati tramite una connessione in modalità flusso aperta.
Utilizzo del controllo del flusso
Dopo che il servizio Pub/Sub Lite recapita i messaggi ai sottoscrittori, questi archiviano i messaggi non confermati in memoria. Puoi limitare il numero di messaggi in sospeso che i sottoscrittori possono archiviare in memoria utilizzando le impostazioni di controllo del flusso. Le impostazioni di controllo del flusso si applicano a ogni partizione da cui un sottoscrittore riceve messaggi.
Puoi configurare le seguenti impostazioni di controllo del flusso:
- Eccezionale dimensione del messaggio. La dimensione massima, in byte, dei messaggi in sospeso. Le dimensioni massime devono essere maggiori di quelle del messaggio più grande.
- Numero di messaggi. Il numero massimo di messaggi in sospeso.
Le dimensioni di un messaggio sono indicate nel
campo size_bytes
.
Puoi configurare le impostazioni di controllo del flusso con la libreria client.
Go
Per configurare le impostazioni di controllo del flusso, trasmetti ReceiveSettings
quando chiami pscompat.NewSubscriberClientWithSettings
. Puoi impostare i seguenti parametri in ReceiveSettings
:
MaxOutstandingMessages
MaxOutstandingBytes
Per un esempio, consulta questo esempio di controllo del flusso.
Java
Per configurare le impostazioni di controllo del flusso, utilizza i seguenti metodi nella classe FlowControlRequest.Builder
:
Python
Per configurare le impostazioni del controllo del flusso, imposta i seguenti parametri nella classe FlowControlSettings
:
bytes_outstanding
messages_outstanding
Ad esempio, se il numero massimo di messaggi è 100 e il sottoscrittore si connette a 10 partizioni, il sottoscrittore non può ricevere più di 100 messaggi da una delle 10 partizioni. Il numero totale di messaggi in sospeso potrebbe essere maggiore di 100, ma il sottoscrittore non può archiviare più di 100 messaggi da ciascuna partizione.