Questo documento fornisce informazioni sull'utilizzo controllo della contemporaneità con i messaggi pubblicati in un argomento.
Il controllo della concorrenza ti consente di ignorare il numero predefinito di thread di I/O in background 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 di Pub/Sub. Puoi anche implementare il tuocontrollo della contemporaneitàa 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 tuoi clienti editori. Per configurare i client abbonati 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à:
- Scopri di più sugli argomenti e sul flusso di lavoro di pubblicazione.
- Crea un argomento.
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, devi disporre di 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() consente di personalizzare il provider di executor utilizzato per l'elaborazione delle risposte di pubblicazione. Ad esempio, puoi modificare il fornitore dell'executor in modo che restituisca un singolo executor condiviso con un numero limitato di thread in più client publisher. Questa configurazione consente di limitare il numero di thread creati.
setChannelProvider() ti consente di personalizzare il fornitore 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 in più client publisher. Il riutilizzo di un canale in troppi clienti potrebbe causare errori
GOAWAY
oENHANCE_YOUR_CALM
. Se visualizzi questi errori nei log della tua applicazione o in Cloud Logs, crea altri canali.
Esempi di codice per controllo della contemporaneità
C++
Prima di provare questo esempio, segui le istruzioni di configurazione di C++ nella guida rapida all'utilizzo delle librerie client. Per ulteriori informazioni, 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 ritirati.
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 nella guida rapida all'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API Java di Pub/Sub.
Ruby
Il seguente esempio 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 ritirati.
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.
Passaggi successivi
Per limitare le località in cui Pub/Sub archivia i dati dei messaggi, consulta Limitazione delle località delle risorse Pub/Sub.
Per saperne di più sulla ricezione dei messaggi, vedi Scegliere un tipo di abbonamento.