Die Nebenläufigkeitserkennung ist eine verfügbare Funktion in der Pub/Sub-Clientbibliothek auf hoher Ebene. Wenn Sie eine Low-Level-Bibliothek verwenden, können Sie auch Ihre eigene Parallelitätssteuerung implementieren.
Die Unterstützung für die Parallelitätssteuerung hängt von der Programmiersprache der Clientbibliothek ab. Bei Sprachimplementierungen, die parallele Threads unterstützen, z. B. C++, Go und Java, wird in den Clientbibliotheken standardmäßig eine bestimmte Anzahl von Threads verwendet.
Diese Auswahl ist möglicherweise nicht optimal für Ihre Anwendung. Wenn Ihre Abonnentenanwendung beispielsweise nicht mit dem eingehenden Nachrichtenvolumen mithalten kann und nicht CPU-gebunden ist, müssen Sie die Anzahl der Threads erhöhen. Bei CPU-intensiven Vorgängen zur Nachrichtenverarbeitung kann es sinnvoll sein, die Anzahl der Threads zu reduzieren.
Auf dieser Seite wird das Konzept der Concurrency Control erläutert und beschrieben, wie du die Funktion für deine Abonnentenclients einrichtest. Informationen zum Konfigurieren Ihrer Publisher-Clients für die Nebenläufigkeitserkennung finden Sie unter Nebenläufigkeitserkennung.
Konfigurationen für die Parallelitätssteuerung
Die Standardwerte für die Variablen zur Nebenläufigkeitserkennung und die Namen der Variablen können sich je nach Clientbibliothek unterscheiden. Weitere Informationen finden Sie in der API-Referenzdokumentation.
In der Java-Clientbibliothek sind die Methoden zum Konfigurieren der Nebenläufigkeitserkennung beispielsweise setParallelPullCount(), setExecutorProvider(), setSystemExecutorProvider() und setChannelProvider().
Mit setParallelPullCount() können Sie festlegen, wie viele Streams geöffnet werden sollen. Sie können weitere Streams öffnen, wenn Ihr Abonnentenclient mehr Daten verarbeiten kann, als in einem einzelnen Stream gesendet werden (10 MBps).
Mit setExecutorProvider() können Sie den Executor-Provider anpassen, der für die Verarbeitung von Nachrichten verwendet wird. Sie können beispielsweise den Executor-Anbieter in einen ändern, der einen einzelnen, gemeinsam genutzten Executor mit einer begrenzten Anzahl von Threads für mehrere Abonnentenclients zurückgibt. Diese Konfiguration trägt dazu bei, die Anzahl der erstellten Threads zu begrenzen. Die Gesamtzahl der Threads, die für die Parallelitätssteuerung verwendet werden, hängt vom Executor-Anbieter ab, der in der Clientbibliothek übergeben wird, und von der Anzahl der parallelen Pull-Vorgänge.
Mit setSystemExecutorProvider() können Sie den Executor-Anbieter anpassen, der für die Lease-Verwaltung verwendet wird. Normalerweise konfigurieren Sie diesen Wert nur, wenn Sie denselben Executor-Anbieter in
setExecutorProviderundsetSystemExecutorProviderverwenden möchten. Sie können beispielsweise denselben Executor-Anbieter verwenden, wenn Sie eine Reihe von Abos mit geringem Durchsatz haben. Wenn Sie denselben Wert verwenden, wird die Anzahl der Threads im Client begrenzt.Mit setChannelProvider() können Sie den Channelanbieter anpassen, der zum Öffnen von Verbindungen zu Pub/Sub verwendet wird. Normalerweise konfigurieren Sie diesen Wert nicht, es sei denn, Sie möchten denselben Channel für mehrere Abonnentenclients verwenden. Wenn ein Channel für zu viele Clients wiederverwendet wird, kann dies zu
GOAWAY- oderENHANCE_YOUR_CALM-Fehlern führen. Wenn diese Fehler in den Logs Ihrer Anwendung oder in Cloud Logging angezeigt werden, erstellen Sie weitere Channels.
Codebeispiele für die Steuerung der Parallelität
C++
Bevor Sie dieses Beispiel testen, folgen Sie der Einrichtungsanleitung für C++ in der Kurzanleitung: Clientbibliotheken verwenden. Weitere Informationen finden Sie in der Pub/Sub C++ API-Referenzdokumentation.
Go
Im folgenden Beispiel wird die Hauptversion der Go Pub/Sub-Clientbibliothek (v2) verwendet. Wenn Sie noch die v1-Bibliothek verwenden, finden Sie hier die Migrationsanleitung zu v2. Eine Liste der Codebeispiele für Version 1 finden Sie unter Eingestellte Codebeispiele.
Bevor Sie dieses Beispiel ausprobieren, folgen Sie der Go-Einrichtungsanleitung in der Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Informationen finden Sie in der Referenzdokumentation zur Pub/Sub Go API.
Java
Bevor Sie dieses Beispiel testen, folgen Sie der Einrichtungsanleitung für Java in der Kurzanleitung: Clientbibliotheken verwenden. Weitere Informationen finden Sie in der Referenzdokumentation zur Pub/Sub Java API.
Ruby
Im folgenden Beispiel wird die Ruby Pub/Sub-Clientbibliothek v3 verwendet. Wenn Sie noch die v2-Bibliothek verwenden, finden Sie hier die Migrationsanleitung für v3. Eine Liste der Ruby v2-Codebeispiele finden Sie unter eingestellte Codebeispiele.
Bevor Sie dieses Beispiel ausprobieren, folgen Sie der Anleitung zur Einrichtung von Ruby in der Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Informationen finden Sie in der Referenzdokumentation zur Pub/Sub Ruby API.
Rust
Bevor Sie dieses Beispiel ausprobieren, folgen Sie der Einrichtungsanleitung für Rust in der Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Informationen finden Sie in der Pub/Sub Rust API-Referenzdokumentation.
Nächste Schritte
Weitere Lieferoptionen, die Sie für ein Abo konfigurieren können:
Fehler bei Nachrichten mit der Richtlinie für Abo-Wiederholungen beheben
Nicht zugestellte Nachrichten an ein Thema für unzustellbare Nachrichten weiterleiten
Bereits bestätigte Nachrichten wiedergeben oder Nachrichten löschen