Dieses Dokument enthält Informationen zur Verwendung der Ablaufsteuerung mit Nachrichten, die in einem 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 Anfragerate für Veröffentlichungen diese Limits überschreitet, werden Anfragen so lange im Arbeitsspeicher angesammelt, bis der Fehler DEADLINE_EXCEEDED
angezeigt wird. 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 Sie den Veröffentlichungsworkflow konfigurieren, müssen Sie die folgenden Aufgaben ausgeführt haben:
Erforderliche Rollen
Bitten Sie Ihren Administrator, Ihnen die IAM-Rolle Pub/Sub Publisher (roles/pubsub.publisher
) für das Thema zu gewähren, um die Berechtigungen zu erhalten, die Sie für die Ablaufsteuerung benötigen.
Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff verwalten.
Möglicherweise können Sie 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 Ablaufsteuerung für Publisher ist mithilfe der 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.
Einfach loslegen (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 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.
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 zur 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 zur 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 zur 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 zur Pub/Sub Ruby API.