Questo documento fornisce informazioni sull'utilizzo controllo della contemporaneità con i messaggi pubblicati in un argomento.
Il controllo della concorrenza ti aiuta a sostituire il numero predefinito di thread in background (I/O) utilizzati dalla libreria client per pubblicare i messaggi. In questo modo, i client publisher possono inviare messaggi in parallelo.
Il controllo della concorrenza è una funzionalità disponibile nella libreria client di alto livello Pub/Sub. Puoi anche implementare il tuo controllo della contemporaneità quando utilizzi una libreria di basso livello.
Il supporto per controllo della contemporaneità dipende dal linguaggio di programmazione della libreria client. Per le implementazioni di linguaggi che supportano thread paralleli, come C++, Go e Java, le librerie client effettuano una scelta predefinita per il numero di thread.
Questa pagina spiega il concetto di controllo della contemporaneità e come configurare la funzionalità per i client publisher. Per configurare i client subscriber per controllo della contemporaneità, consulta Elaborare più messaggi con il controllo della concorrenza.
Prima di iniziare
Prima di configurare il flusso di lavoro di pubblicazione, assicurati di aver completato le seguenti attività:
Ruoli obbligatori
Per ottenere le autorizzazioni necessarie per pubblicare messaggi in un argomento, 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.
Per creare o aggiornare argomenti e abbonamenti, sono necessarie autorizzazioni aggiuntive.
Configurazioni del controllo della concorrenza
I valori predefiniti per le 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 controllo della contemporaneità sono setExecutorProvider() e setChannelProvider(). Per saperne di più, consulta
la
documentazione di riferimento dell'API.
setExecutorProvider() ti consente di personalizzare il provider di esecuzione utilizzato per l'elaborazione delle risposte di pubblicazione. Ad esempio, puoi modificare il provider di esecuzione in modo che restituisca un singolo esecutore condiviso con un numero limitato di thread su più client publisher. Questa configurazione consente di limitare il numero di thread creati.
setChannelProvider() ti consente di personalizzare il provider di canali utilizzato per aprire le connessioni a Pub/Sub. In genere, non configuri questo valore a meno che tu non voglia utilizzare lo stesso canale su più client publisher. Il riutilizzo di un canale su un numero eccessivo di client potrebbe generare errori
GOAWAYoENHANCE_YOUR_CALM. Se visualizzi questi errori nei log dell'applicazione o nei log di Cloud, crea altri canali.
Esempi di codice per controllo della contemporaneità
C++
Prima di provare questo esempio, segui le istruzioni di configurazione di C++ in Guida rapida all'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API Pub/Sub C++ .
Go
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 in 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 all'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API Pub/Sub Java.
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 in Guida rapida all'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API Pub/Sub Ruby.
Passaggi successivi
Per limitare le località in cui Pub/Sub archivia i dati dei messaggi, consulta Limitare le località delle risorse Pub/Sub.
Per saperne di più sulla ricezione dei messaggi, consulta Scegliere un tipo di abbonamento.