Questo documento fornisce informazioni sull'utilizzo del controllo del flusso con i messaggi pubblicati in un argomento.
Informazioni sul controllo del flusso
Un client editore potrebbe tentare di pubblicare messaggi più velocemente di quanto quel client sia in grado di inviare dati al servizio Pub/Sub. I clienti sono limitati da molti fattori, tra cui:
- CPU della macchina, RAM e capacità della rete
- Impostazioni di rete, ad esempio il numero di richieste in sospeso e la larghezza di banda disponibile
- La latenza di ogni richiesta di pubblicazione, in gran parte determinata dalle connessioni di rete tra il servizio Pub/Sub, il client e Google Cloud.
Se il tasso di richieste di pubblicazione supera questi limiti, le richieste si accumulano in memoria finché non restituiscono un errore DEADLINE_EXCEEDED
. Ciò si verifica soprattutto quando decine di migliaia di messaggi vengono pubblicati in un loop, generando migliaia di richieste in millisecondi.
Puoi diagnosticare il problema controllando le metriche lato server in Monitoring. Non potrai visualizzare le richieste non andate a buon fine con DEADLINE_EXCEEDED
, ma solo le richieste andate a buon fine. La percentuale di richieste riuscite indica la capacità di velocità effettiva delle macchine client, fornendo una base per la configurazione del controllo del flusso.
Per ridurre i problemi di flusso, configura il client del publisher con il controllo del flusso per limitare la frequenza di richieste di pubblicazione. Puoi configurare il numero massimo di byte assegnati per le richieste in sospeso e il numero massimo di messaggi in sospeso consentito. Imposta questi limiti in base alla capacità di velocità effettiva delle macchine client.
Prima di iniziare
Prima di configurare il flusso di lavoro di pubblicazione, assicurati di aver completato le seguenti attività:
- Scopri di più sugli argomenti e sul flusso di lavoro di pubblicazione.
- Crea un argomento.
Ruoli obbligatori
Per ottenere le autorizzazioni necessarie per utilizzare il controllo del flusso,
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.
Potresti anche essere in grado di ottenere le autorizzazioni richieste tramite i ruoli personalizzati o altri ruoli predefiniti.
Devi disporre di autorizzazioni aggiuntive per creare o aggiornare argomenti e sottoscrizioni.
Utilizzare il controllo del flusso con i messaggi
Il controllo del flusso dell'editore è disponibile utilizzando le librerie client Pub/Sub nei seguenti linguaggi:
C++
Prima di provare questo esempio, segui le istruzioni di configurazione di C++ riportate nella Guida rapida sull'utilizzo delle librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API C++ Pub/Sub.
Go
Prima di provare questo esempio, segui le istruzioni di configurazione di Go nella Guida rapida sull'utilizzo delle librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Go Pub/Sub.
Java
Prima di provare questo esempio, segui le istruzioni di configurazione Java in Guida rapida sull'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 sull'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 sull'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 in Guida rapida sull'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 in Guida rapida sull'utilizzo delle librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Ruby Pub/Sub.