Il controllo della contemporaneità è una funzionalità disponibile in Pub/Sub libreria client di alto livello. Puoi anche implementare il tuo controllo della contemporaneità quando Stai utilizzando una libreria di basso livello.
Il supporto del controllo della concorrenza dipende dal linguaggio di programmazione della libreria client. Per le implementazioni linguistiche che supportano i thread paralleli, come C++, Go e Java, le librerie client sono la scelta predefinita per il numero di thread.
Questa scelta potrebbe non essere ottimale per la tua applicazione. Ad esempio, se la tua applicazione di abbonamento non è al passo con il volume di messaggi in entrata e non è vincolata alla CPU, devi aumentare il numero di thread. Per operazioni di elaborazione dei messaggi che richiedono un'elevata intensità di risorse della CPU, potrebbe essere opportuno ridurre il numero di thread.
Configurazioni dei controlli della contemporaneità
I valori predefiniti per le variabili di controllo della concorrenza e i nomi delle variabili possono variare in base alle librerie client. Ad esempio, nella libreria client Java, i metodi per configurare il controllo della concorrenza sono setSystemExecutorProvider()
, setExecutorProvider()
e setParallelPullCount()
.
setParallelPullCount() ti consente di decidere quanti stream aprire. Puoi aprire più stream se il client sottoscrittore è in grado di gestire più dati di quelli inviati su un singolo stream, ovvero 10 MB/s.
setExecutorProvider() ti consente di personalizzare il provider dell'executor utilizzato per elaborare i messaggi. Ad esempio, puoi cambiare il provider di esecutori in uno che restituisce un singolo esecutore condiviso con un numero limitato di thread client con più sottoscrittori. Questa configurazione consente di limitare il numero i thread creati.
setSystemExecutorProvider() consente di personalizzare il provider di esecutori utilizzata per la gestione dei leasing. In genere, non configuri questo valore a meno che vuoi utilizzare lo stesso provider di esecutori in
setExecutorProvider
esetSystemExecutorProvider
. Ad esempio, puoi utilizzare lo stesso fornitore di agenti se hai un numero di abbonamenti a basso throughput. L'utilizzo dello stesso valore limita il numero di thread nel client.
Il numero totale di thread utilizzati per il controllo della concorrenza dipende dal fornitore dell'executor passato nella libreria client e dal numero di pull paralleli.
Esempi di codice per il controllo della contemporaneità
C++
Prima di provare questo esempio, segui le istruzioni di configurazione C++ riportate nella guida rapida all'utilizzo delle librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Pub/Sub C++.
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 riportate nella guida rapida all'utilizzo delle librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Java 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 pubblicazione 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 i messaggi per i quali è stato ricevuto l'acknowledgement o eliminare i messaggi