Die Nebenläufigkeitserkennung ist eine verfügbare Funktion in der Pub/Sub Clientbibliothek auf hoher Ebene. Sie können auch Ihre eigene Nebenläufigkeitserkennung implementieren, wenn Sie eine Bibliothek auf niedriger Ebene verwenden.
Die Unterstützung für die Nebenläufigkeitserkennung hängt von der Programmiersprache der Clientbibliothek ab. Bei Sprachimplementierungen, die parallele Threads wie C++, Go und Java unterstützen, legen die Clientbibliotheken die Anzahl der Threads jeweils anhand ihrer Standardeinstellung fest.
Diese Wahl ist möglicherweise nicht optimal für Ihre Anwendung. Wenn Ihre Abonnentenanwendung beispielsweise nicht mit dem eingehenden Nachrichtenvolumen mithält und nicht CPU-gebunden ist, müssen Sie die Anzahl der Threads erhöhen. Bei CPU-intensiver Nachrichtenverarbeitung kann es sinnvoll sein, die Anzahl der Threads zu verringern.
Auf dieser Seite wird das Konzept der Nebenläufigkeitserkennung erläutert und beschrieben, wie Sie die Funktion für Ihre Abonnentenclients einrichten. Informationen zum Konfigurieren Ihrer Publisher-Clients für die Nebenläufigkeitserkennung finden Sie unter Nebenläufigkeitserkennung.
Konfigurationen für die Nebenläufigkeitserkennung
Die Standardwerte für die Variablen der Nebenläufigkeitserkennung und die Namen der Variablen können sich zwischen den Clientbibliotheken unterscheiden. Weitere Informationen finden Sie in der
API-Referenzdokumentation.
In der Java-Clientbibliothek sind beispielsweise die Methoden zum Konfigurieren der Nebenläufigkeitserkennung setParallelPullCount(), setExecutorProvider(), setSystemExecutorProvider() und setChannelProvider().
Mit setParallelPullCount() können Sie festlegen, wie viele Streams geöffnet werden sollen. Sie können mehr Streams öffnen, wenn Ihr Abonnentenclient mehr Daten verarbeiten kann als die 10 MB/s, die über einen einzelnen Stream gesendet werden.
Mit setExecutorProvider() können Sie den Executor-Anbieter anpassen, der für die Verarbeitung von Nachrichten verwendet wird. Sie können den Executor-Anbieter beispielsweise 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 Nebenläufigkeitserkennung verwendet werden, hängt vom Executor-Bereitsteller ab, der in der Clientbibliothek übergeben wird, und von der Anzahl der parallelen Pull-Vorgänge.
setSystemExecutorProvider() ermöglicht Ihnen die Anpassung des Executor-Anbieters, 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 Channel-Anbieter anpassen, der zum Öffnen von Verbindungen zu Pub/Sub verwendet wird. Normalerweise konfigurieren Sie diesen Wert nur, wenn Sie denselben Channel für mehrere Abonnentenclients verwenden möchten. Wenn Sie einen Channel für zu viele Clients wiederverwenden, kann dies zu
GOAWAY- oderENHANCE_YOUR_CALM-Fehlern führen. Wenn diese Fehler in den Logs Ihrer Anwendung oder in Cloud Loggingangezeigt werden, erstellen Sie weitere Channels.
Codebeispiele für die Nebenläufigkeitserkennung
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 (Version 2) verwendet. Wenn Sie noch die Version 1-Bibliothek verwenden, siehe den Migrationsleitfaden zu Version 2. Eine Liste der Codebeispiele für Version 1 finden Sie unter Veraltete Codebeispiele.
Bevor Sie dieses Beispiel testen, folgen Sie der Einrichtungsanleitung für Go in der Kurzanleitung: Clientbibliotheken verwenden. 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 Version 3 verwendet. Wenn Sie noch die Version 2-Bibliothek verwenden, lesen Sie den Migrationsleitfaden zu Version 3. Eine Liste der Codebeispiele für Ruby Version 2 finden Sie unter Veraltete Codebeispiele.
Bevor Sie dieses Beispiel testen, folgen Sie der Einrichtungsanleitung für Ruby in der Kurzanleitung: Clientbibliotheken verwenden. Weitere Informationen finden Sie in der Referenzdokumentation zur Pub/Sub Ruby API.
Nächste Schritte
Weitere Informationen zu den anderen Übermittlungsoptionen, die Sie für ein Abo konfigurieren können:
Nachrichtenfehler mit der Abo-Wiederholungsrichtlinie verarbeiten
Nicht zugestellte Nachrichten an ein Thema für unzustellbare Nachrichten weiterleiten
Zuvor bestätigte Nachrichten wiedergeben oder Nachrichten löschen