Data pipelines a volte registrano picchi di traffico pubblicato. Picchi di traffico può sovraccaricare gli iscritti, a meno che tu non sia in grado di farlo. Una soluzione semplice evitare picchi di traffico è aumentare dinamicamente le risorse dei sottoscrittori Pub/Sub per elaborare altri messaggi. Tuttavia, questa soluzione potrebbe far aumentare o meno i costi di funzionare all'istante. Ad esempio, potresti aver bisogno di molte VM.
Il controllo del flusso lato abbonato consente all'abbonato di regolare la tariffa a quali messaggi vengono importati. Il controllo del flusso gestisce quindi picchi di traffico senza aumentare i costi o aumentare il numero di abbonati.
Il controllo del flusso è una funzionalità disponibile in Pub/Sub libreria client di alto livello. Puoi anche implementare la tua programmazione di controllo del flusso quando utilizzi una libreria client di basso livello.
La necessità di un controllo del flusso indica che i messaggi vengono pubblicati una percentuale maggiore di quella fruita. Se questo è uno scenario anziché un picco temporaneo nel volume dei messaggi, considera l'aumento il numero di istanze client del sottoscrittore.
Configurazione del controllo di flusso
Il controllo del flusso consente di configurare il numero massimo di byte allocati per richieste in sospeso e il numero massimo consentito di messaggi in sospeso. Imposta questi limiti in base alla capacità di velocità effettiva delle tue macchine client.
I valori predefiniti per le variabili di controllo del flusso e i nomi dei potrebbero essere diverse nelle librerie client. Ad esempio: Nella libreria client Java, le seguenti variabili configurano il controllo del flusso:
setMaxOutstandingElementCount(). Definisce il numero massimo di messaggi per il quale Pub/Sub non ha ricevuto riconoscimenti o ringraziamenti.
setMaxOutstandingRequestBytes(). Definisce la dimensione massima dei messaggi per il quale Pub/Sub non ha ricevuto riconoscimenti o ringraziamenti.
Se il limite per setMaxOutstandingElementCount()
o
setMaxOutstandingRequestBytes()
è incrociato, il client sottoscrittore
non esegue il pull di altri messaggi. Questo comportamento persiste finché i messaggi
di cui è già stato eseguito il pull, invece, ricevono un riconoscimento o un riconoscimento negativo.
Possiamo quindi allineare la velocità effettiva al costo associato
avere più abbonati.
Esempi di codice per il controllo del flusso
Per controllare la frequenza con cui il client del sottoscrittore riceve i messaggi, utilizza funzionalità di controllo del flusso dell'abbonato. Queste funzionalità di controllo del flusso illustrato nei seguenti esempi:
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 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.
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 in Guida rapida all'utilizzo delle librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Ruby Pub/Sub.
Passaggi successivi
Scopri le altre opzioni di consegna che puoi configurare per un abbonamento:
Gestire gli errori relativi ai messaggi con il criterio di ripetizione dell'abbonamento
Inoltrare messaggi non consegnati a un argomento messaggi non recapitabili
Riprodurre di nuovo i messaggi precedentemente inclusi con ACK o eliminarli definitivamente
Elaborare più messaggi con il controllo della contemporaneità