Il controllo della contemporaneità è una funzionalità disponibile nella libreria client di alto livello di Pub/Sub. Puoi anche implementare il tuo controllo della contemporaneità quando utilizzi una libreria di basso livello.
Il supporto per il controllo della contemporaneità dipende dal linguaggio di programmazione della libreria client. Per le implementazioni di linguaggio che supportano i thread paralleli, come C++, Go e Java, le librerie client rappresentano la scelta predefinita per il numero di thread.
Questa scelta potrebbe non essere ottimale per la tua applicazione. Ad esempio, se l'applicazione del sottoscrittore non riesce a tenere il passo con il volume dei messaggi in entrata e non è vincolata alla CPU, è necessario aumentare il numero dei thread. Per le operazioni di elaborazione dei messaggi che richiedono un uso intensivo della CPU, potrebbe essere opportuno ridurre il numero di thread.
Configurazioni del controllo della contemporaneità
I valori predefiniti delle variabili di controllo della contemporaneità e i nomi delle variabili potrebbero variare a seconda delle librerie client. Ad esempio, nella libreria client Java, i metodi per configurare il controllo della contemporaneità sono setSystemExecutorProvider()
, setExecutorProvider()
e setParallelPullCount()
.
setParallelPullCount() ti consente di decidere quanti stream aprire. Puoi aprire più flussi se il tuo client abbonato è in grado di gestire più dati di quelli inviati in un singolo stream di 10 MBps.
setExecutorProvider() consente di personalizzare il provider di esecutore utilizzato per l'elaborazione dei messaggi. Ad esempio, puoi cambiare il provider di esecutore impostandone uno che restituisce un singolo esecutore condiviso con un numero limitato di thread in più client dell'abbonato. Questa configurazione consente di limitare il numero di thread creati.
setSystemExecutorProvider() consente di personalizzare il provider di esecutori utilizzato per la gestione del lease. In genere, questo valore non viene configurato a meno che tu non voglia utilizzare lo stesso provider di esecutori in
setExecutorProvider
esetSystemExecutorProvider
. Ad esempio, puoi utilizzare lo stesso provider di esecutori se disponi di diverse sottoscrizioni a bassa velocità effettiva. L'uso dello stesso valore limita il numero di thread nel client.
Il numero totale di thread utilizzati per il controllo della contemporaneità dipende dal provider di esecutori passati nella libreria client e dal numero di pull parallelo.
Esempi di codice per il controllo della contemporaneità
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.
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.
Passaggi successivi
Scopri le altre opzioni di consegna che puoi configurare per un abbonamento:
Gestire gli errori relativi ai messaggi con il criterio per i nuovi tentativi di sottoscrizione
Inoltrare i messaggi non recapitati a un argomento messaggi non recapitabili
Riprodurre di nuovo i messaggi compromessi in precedenza o eliminare definitivamente i messaggi