In diesem Dokument finden Sie Informationen zur Verwendung der Ablaufsteuerung bei Nachrichten, die für ein Thema veröffentlicht werden.
Ablaufsteuerung
Ein Publisher-Client kann versuchen, Nachrichten schneller zu veröffentlichen, als dieser Client Daten an den Pub/Sub-Dienst senden kann. Clients sind durch viele Faktoren begrenzt, darunter:
- Maschinen-CPU, RAM und Netzwerkkapazität
- Netzwerkeinstellungen, z. B. Anzahl der ausstehenden Anfragen und verfügbare Bandbreite
- Die Latenz jeder Veröffentlichungsanfrage, die hauptsächlich durch die Netzwerkverbindungen zwischen dem Pub/Sub-Dienst, dem Client und Google Cloud bestimmt wird
Wenn die Veröffentlichungsanfragerate diese Limits überschreitet, sammeln sich Anfragen im Speicher an, bis sie mit dem Fehler DEADLINE_EXCEEDED
fehlschlagen. Dies ist besonders wahrscheinlich, wenn Zehntausende von Nachrichten in einer Schleife veröffentlicht werden und dadurch Tausende von Anfragen in Millisekunden generiert werden.
Sie können dieses Problem mithilfe der serverseitigen Messwerte in Monitoring diagnostizieren. Sie können die Anfragen, die mit DEADLINE_EXCEEDED
fehlgeschlagen sind, nicht sehen, sondern nur die erfolgreichen Anfragen. Die Rate erfolgreicher Anfragen gibt die Durchsatzkapazität Ihrer Clientmaschinen an und bietet eine Grundlage für die Konfiguration der Ablaufsteuerung.
Wenn Sie die Probleme mit der Ablaufrate minimieren möchten, konfigurieren Sie Ihren Publisher-Client mit Ablaufsteuerung, um die Rate der Veröffentlichungsanfragen zu begrenzen. Sie können die maximale Anzahl der Bytes konfigurieren, die für ausstehende Anfragen zugewiesen sind, und die maximale Anzahl zulässiger ausstehender Nachrichten. Legen Sie diese Limits entsprechend der Durchsatzkapazität Ihrer Clientmaschinen fest.
Hinweise
Bevor du den Veröffentlichungsworkflow konfigurierst, musst du die folgenden Aufgaben erledigt haben:
Erforderliche Rollen
Bitten Sie Ihren Administrator, Ihnen die IAM-Rolle Pub/Sub-Publisher (roles/pubsub.publisher
) für Ihr Thema zu erteilen, damit Sie die für die Flusssteuerung erforderlichen Berechtigungen erhalten.
Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.
Sie können die erforderlichen Berechtigungen auch über benutzerdefinierte Rollen oder andere vordefinierte Rollen erhalten.
Sie benötigen zusätzliche Berechtigungen, um Themen und Abos zu erstellen oder zu aktualisieren.
Ablaufsteuerung mit Nachrichten verwenden
Die Publisher-Ablaufsteuerung ist über die Pub/Sub-Clientbibliotheken in den folgenden Sprachen verfügbar:
C++
Bevor Sie dieses Beispiel testen, folgen Sie der Einrichtungsanleitung für C++ in der Kurzanleitung: Clientbibliotheken verwenden. Weitere Informationen finden Sie in der Referenzdokumentation zur Pub/Sub C++ API.
Go
Bevor Sie dieses Beispiel testen, folgen Sie der Einrichtungsanleitung für Go in der Schnellstart-Anleitung: Clientbibliotheken verwenden. Weitere Informationen finden Sie in der Referenzdokumentation zu 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 zu Pub/Sub Java API.
Node.js
Bevor Sie dieses Beispiel testen, folgen Sie der Einrichtungsanleitung für PHP in der Schnellstart-Anleitung: Clientbibliotheken verwenden. Weitere Informationen finden Sie in der Referenzdokumentation zu Pub/Sub Node.js API.
Node.js
Bevor Sie dieses Beispiel testen, folgen Sie der Einrichtungsanleitung für PHP in der Schnellstart-Anleitung: Clientbibliotheken verwenden. Weitere Informationen finden Sie in der Referenzdokumentation zu Pub/Sub Node.js API.
Python
Bevor Sie dieses Beispiel testen, folgen Sie der Einrichtungsanleitung für Python in der Schnellstart-Anleitung: Clientbibliotheken verwenden. Weitere Informationen finden Sie in der Referenzdokumentation zu Pub/Sub Python API.
Ruby
Bevor Sie dieses Beispiel testen, folgen Sie der Einrichtungsanleitung für Ruby in der Schnellstart-Anleitung: Clientbibliotheken verwenden. Weitere Informationen finden Sie in der Referenzdokumentation zu Pub/Sub Ruby API.