Veröffentlichungsfehler werden in der Regel clientseitig verursacht Engpässe, z. B. unzureichende Dienst-CPUs, fehlerhafter Thread-Zustand oder Netzwerküberlastung. In der Wiederholungsrichtlinie des Publishers ist die Anzahl der der Zeit, in der Pub/Sub versucht, eine Nachricht zu senden, und die Dauer zwischen den einzelnen Versuchen.
Dieses Dokument enthält Informationen zur Verwendung von Wiederholungsanfragen mit Nachrichten zu einem Thema veröffentlicht.
Hinweise
Bevor Sie den Veröffentlichungsworkflow konfigurieren, müssen Sie die folgenden Schritte ausgeführt haben Aufgaben:
Erforderliche Rollen
So erhalten Sie die Berechtigungen, die Sie zum Wiederholen von Nachrichtenanfragen an ein Thema benötigen:
bitten Sie Ihren Administrator, Ihnen
Die IAM-Rolle Pub/Sub-Publisher (roles/pubsub.publisher
) für das Thema.
Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff 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.
Wiederholungsanfragen
Wiederholungseinstellungen steuern, wie die Pub/Sub-Clientbibliotheken Veröffentlichungsanfragen wiederholen. Die Clientbibliotheken haben eine der folgenden Wiederholungseinstellungen:
- Zeitüberschreitung der ersten Anfrage: Die Zeitspanne, nach der eine Clientbibliothek nicht mehr auf die Fertigstellung der ersten Veröffentlichungsanfrage wartet.
- Wiederholungsverzögerung: Die Zeitspanne, die eine Clientbibliothek nach der Zeitüberschreitung einer Anfrage wartet, bevor sie die Anfrage wiederholt.
- Gesamtzeitüberschreitung: Die Zeitspanne, nach der eine Clientbibliothek keine weiteren Veröffentlichungsanfragen mehr wiederholt.
Damit Veröffentlichungsanfragen wiederholt werden können, muss die Zeitüberschreitung der ersten Anfrage kürzer sein als die Gesamtzeitüberschreitung. Wenn Sie beispielsweise exponentiellen Backoff verwenden, berechnen die Clientbibliotheken das Anfragezeitlimit und die Wiederholungsverzögerung folgendermaßen:
- Nach jeder Veröffentlichungsanfrage erhöht sich das Anfragezeitlimit um den Zeitüberschreitungsfaktor der Anfrage bis zum maximalen Anfragezeitlimit.
- Nach jedem Wiederholungsversuch erhöht sich die Wiederholungsverzögerung um den Wiederholungsverzögerungsfaktor bis zur maximalen Wiederholungsverzögerung.
Nachrichtenanfrage wiederholen
Während der Veröffentlichung kann es sein, dass eine vorübergehende oder dauerhafte Veröffentlichung erfolgt. Störungen. Bei vorübergehenden Fehlern sind in der Regel keine speziellen Schritte da Pub/Sub die Nachrichten automatisch wiederholt.
Ein Fehler kann auch auftreten, wenn ein Veröffentlichungsvorgang erfolgreich ist, die Veröffentlichung Antwort vom Publisher-Client nicht rechtzeitig erhalten. Auch in diesem Fall wird noch einmal versucht. Daraus folgt, dass Sie zwei Nachrichten erhalten, die identisch sind, mit unterschiedlichen Nachrichten-IDs.
Bei anhaltenden Fehlern sollten Sie die Implementierung entsprechender Maßnahmen außerhalb von des Veröffentlichungsprozesses, damit Pub/Sub nicht überlastet wird.
Fehlgeschlagene Veröffentlichungen werden automatisch wiederholt, mit Ausnahme von Fehlern, die dies Wiederholungsversuche rechtfertigen. In diesem Beispielcode wird die Erstellung eines Publishers mit benutzerdefinierten Wiederholungseinstellungen (beachten Sie, dass nicht alle Clientbibliotheken benutzerdefinierte Wiederholungsversuche unterstützen). Einstellungen Siehe API-Referenzdokumentation für die ausgewählte Sprache):
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.
C#
Bevor Sie dieses Beispiel testen, folgen Sie der Einrichtungsanleitung für C# in der Schnellstart-Anleitung: Clientbibliotheken verwenden. Weitere Informationen finden Sie in der Referenzdokumentation zu 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.
Anfragen mit Sortierschlüsseln wiederholen
Angenommen, Sie haben einen einzelnen Publisher-Client. Sie verwenden die Pub/Sub-Clientbibliotheken zum Veröffentlichen der Nachrichten 1, 2 und 3 für die Schlüssel A erhalten. Angenommen, die veröffentlichte Antwort auf Nachricht 1 ist nicht vom Publisher-Client vor Ablauf der RPC-Frist empfangen wird. Nachricht 1 müssen erneut veröffentlicht werden. Die Reihenfolge der vom Abonnentenclient empfangenen Nachrichten wird dann zu 1, 1, 2 und 3, wenn Sie davon ausgehen, dass Nachricht 2 erst nach Nachricht 1 wird erfolgreich abgeschlossen. Jede veröffentlichte Mitteilung hat eine eigene Nachrichten-ID. Aus Sicht des Abonnentenclients wurden vier Nachrichten wobei die ersten beiden denselben Inhalt haben.
Das Wiederholen von Veröffentlichungsanfragen mit Sortierschlüsseln kann auch durch Batchanfragen erschwert werden Einstellungen. Die Clientbibliothek fasst Nachrichten in einem Batch zusammen, um die Effizienz zu steigern. Veröffentlichung. Fahren Sie mit dem vorherigen Beispiel fort und gehen Sie davon aus, dass die Nachrichten 1 und 2 in Batches zusammengefasst. Dieser Batch wird als einzelne Anfrage an den Server gesendet. Wenn wenn der Server keine Antwort rechtzeitig zurückgibt, versucht der Publisher-Client, dies zu wiederholen. einen Stapel von zwei Nachrichten. Daher ist es möglich, dass der Abonnentenclient empfängt die Nachrichten 1, 2, 1, 2 und 3. Wenn Sie Pub/Sub verwenden um Nachrichten der Reihe nach zu veröffentlichen, und ein Veröffentlichungsvorgang schlägt fehl, der Dienst die Veröffentlichungsvorgänge für alle verbleibenden Nachrichten auf demselben Reihenfolgeschlüssel. Ein Publisher-Kunde kann dann entscheiden, einem der folgende Vorgänge:
Alle Nachrichten mit Fehlern der Reihe nach noch einmal veröffentlichen
Eine Teilmenge der Nachrichten mit Fehlern der Reihe nach noch einmal veröffentlichen
Neue Nachrichten veröffentlichen
Wenn ein nicht wiederholbarer Fehler auftritt, veröffentlicht die Clientbibliothek die Nachricht nicht und veröffentlicht keine weiteren Nachrichten mit demselben Reihenfolgeschlüssel. Wenn ein Publisher beispielsweise eine Nachricht an ein nicht vorhandenes Thema sendet, tritt ein nicht wiederholbarer Fehler auf. Wenn Sie weitere Nachrichten mit demselben Reihenfolgenschlüssel veröffentlichen möchten, rufen Sie eine Methode auf, um die Veröffentlichung fortzusetzen und dann wieder zu veröffentlichen.
Im folgenden Beispiel wird gezeigt, wie Nachrichten mit demselben Reihenfolgeschlüssel wieder veröffentlicht werden.
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.
C#
Bevor Sie dieses Beispiel testen, folgen Sie der Einrichtungsanleitung für C# in der Schnellstart-Anleitung: Clientbibliotheken verwenden. Weitere Informationen finden Sie in der Referenzdokumentation zu 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.
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.
Nächste Schritte
Informationen zum Konfigurieren erweiterter Veröffentlichungsoptionen finden Sie hier: