Questo documento fornisce informazioni sull'utilizzo del controllo di flusso con i messaggi pubblicati in un argomento.
Informazioni sul controllo del flusso
Un client publisher potrebbe tentare di pubblicare messaggi più velocemente di quanto sia in grado di inviare dati al servizio Pub/Sub. I client sono limitati da molti fattori, tra cui:
- CPU, RAM e capacità di rete della macchina
- Impostazioni della rete, come il numero di richieste in sospeso e la larghezza di banda disponibile
- La latenza di ogni richiesta di pubblicazione, determinata in gran parte 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 fino a quando non generano un errore DEADLINE_EXCEEDED. Ciò è particolarmente probabile quando decine di migliaia di messaggi vengono pubblicati in un loop, generando migliaia di richieste in millisecondi.
Puoi diagnosticare questo problema controllando le metriche lato server in Monitoring. Non potrai visualizzare le richieste non riuscite con DEADLINE_EXCEEDED, ma solo quelle andate a buon fine. La percentuale di richieste riuscite indica la capacità di velocità effettiva delle macchine client, fornendo una base di riferimento per la configurazione del controllo di flusso.
Per mitigare i problemi relativi alla portata, configura il client publisher con il controllo di flusso per limitare la frequenza delle richieste di pubblicazione. Puoi configurare il numero massimo di byte allocati per le richieste in sospeso e il numero massimo di messaggi in sospeso consentiti. Imposta questi limiti in base alla capacità di throughput delle tue macchine client.
Prima di iniziare
Prima di configurare il workflow di pubblicazione, assicurati di aver completato le seguenti attività:
- Scopri di più sugli argomenti e sul workflow di pubblicazione.
- Crea un argomento.
Ruoli obbligatori
Per ottenere le autorizzazioni necessarie per utilizzare il controllo di flusso, chiedi all'amministratore di concederti il ruolo IAM Pub/Sub Publisher (roles/pubsub.publisher) nell'argomento.
Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.
Potresti anche riuscire a ottenere le autorizzazioni richieste tramite i ruoli personalizzati o altri ruoli predefiniti.
Devi disporre di autorizzazioni aggiuntive per creare o aggiornare argomenti e sottoscrizioni.
Utilizza il controllo di flusso con i messaggi
Il controllo di flusso del publisher è disponibile utilizzando le librerie client Pub/Sub nei seguenti linguaggi:
C++
Prima di provare questo esempio, segui le istruzioni di configurazione di C++ nella Guida rapida all'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API Pub/Sub C++.
Vai
L'esempio seguente utilizza la versione principale della libreria client Go Pub/Sub (v2). Se utilizzi ancora la libreria v1, consulta la guida alla migrazione alla v2. Per visualizzare un elenco di esempi di codice della versione 1, consulta gli esempi di codice deprecati.
Prima di provare questo esempio, segui le istruzioni di configurazione di Go nella Guida rapida all'utilizzo delle librerie client. Per saperne di più, 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: utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API Java di Pub/Sub.
Node.js
Prima di provare questo esempio, segui le istruzioni di configurazione di Node.js nella Guida rapida: utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API Pub/Sub Node.js.
Node.js
Prima di provare questo esempio, segui le istruzioni di configurazione di Node.js nella Guida rapida: utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API Pub/Sub Node.js.
Python
Prima di provare questo esempio, segui le istruzioni di configurazione di Python nella Guida rapida: utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API Python di Pub/Sub.
Ruby
L'esempio seguente utilizza la libreria client Ruby Pub/Sub v3. Se utilizzi ancora la libreria v2, consulta la guida alla migrazione alla v3. Per visualizzare un elenco di esempi di codice Ruby v2, consulta gli esempi di codice deprecati.
Prima di provare questo esempio, segui le istruzioni di configurazione di Ruby nella Guida rapida all'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API Pub/Sub Ruby.