Ein Abonnent kann aus verschiedenen Gründen keine Nachrichten verarbeiten. So kann es beispielsweise sein, dass der Abonnent vorübergehende Probleme beim Abrufen der erforderlichen Daten hat oder eine Nachricht in einem unerwarteten Format erhält.
Wenn Pub/Sub versucht, eine Nachricht zuzustellen, der Abonnent sie jedoch nicht bestätigen kann, versucht Pub/Sub automatisch, die Nachricht noch einmal zu senden. Dieser erneute Zustellversuch wird als Wiederholungsrichtlinie für Abos bezeichnet. Diese Funktion kann nicht aktiviert oder deaktiviert werden. Sie können jedoch auswählen, welche Art von Wiederholungsrichtlinie Sie verwenden möchten.
Hinweise
- Erstellen Sie ein Thema, das Sie mit Ihrem Abo verwenden möchten, das eine Richtlinie für Abo-Wiederholungen enthält.
Erforderliche Rollen
Bitten Sie Ihren Administrator, Ihnen die IAM-Rolle „Pub/Sub Editor“ (roles/pubsub.editor
) für Ihr Projekt zuzuweisen, um die Berechtigungen zu erhalten, die Sie zum Verwalten von Themen und Abos benötigen.
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 können die Zugriffssteuerung auf Projektebene und auf der Ebene einzelner Ressourcen konfigurieren. Sie können ein Abo in einem Projekt erstellen und es an ein Thema anhängen, das sich in einem anderen Projekt befindet. Prüfen Sie, ob Sie die erforderlichen Berechtigungen für jedes Projekt haben.
Arten von Wiederholungsrichtlinien
Wenn Sie Ihr Abo zum ersten Mal erstellen und konfigurieren, können Sie eine der folgenden Wiederholungsrichtlinien auswählen: Sofortige erneute Zustellung oder Exponentieller Backoff. Standardmäßig verwenden Abos die sofortige erneute Zustellung.
Sofortige Neuzustellung
Standardmäßig versucht Pub/Sub, die Nachricht sofort noch einmal zu senden (und möglicherweise an denselben Abonnentenclient). Wenn sich die Bedingungen, die die Bestätigung der Nachricht verhindert haben, jedoch nicht geändert haben, kann die sofortige erneute Zustellung zu Problemen führen. In diesem Fall kann es sein, dass Pub/Sub mehrere Nachrichten, die nicht bestätigt werden können, noch einmal sendet.
Zur Lösung von Problemen mit sofortiger erneuter Zustellung können Sie in Pub/Sub eine Richtlinie für exponentiellen Backoff konfigurieren.
Exponentielle Backoffs
Mit dem exponentiellen Backoff können Sie zwischen Wiederholungsversuchen schrittweise längere Verzögerungen hinzufügen. Nach dem ersten Zustellungsfehler wartet Pub/Sub eine minimale Backoff-Zeit ab, bevor es einen neuen Versuch durchführt. Bei jedem weiteren Fehler auf dieser Nachricht wird die Verzögerung bis zu einer maximalen Verzögerung (0 und 600 Sekunden) erhöht.
Die maximalen und minimalen Verzögerungsintervalle sind nicht festgelegt und sollten basierend auf lokalen Faktoren für Ihre Anwendung konfiguriert werden.
Beachten Sie bei exponentiellem Backoff Folgendes:
- Der exponentielle Backoff wird bei folgenden Aktionen ausgelöst:
- Wenn eine negative Bestätigung empfangen wird.
- Wenn die Bestätigungsfrist für eine Nachricht abläuft.
- Der exponentielle Backoff wird nur pro Nachricht und nicht für alle Nachrichten in einem Abo (global) angewendet.
- Während des exponentiellen Backoffs stellt Pub/Sub weiterhin andere Nachrichten zu, auch wenn für vorherige Nachrichten negative Bestätigungen empfangen wurden (es sei denn, Sie verwenden die geordnete Nachrichtenzustellung).
Mit der Richtlinie für Wiederholungsversuche können Sie die Zustellung und Verarbeitung einer Teilmenge von Nachrichten verzögern, um eine vorübergehende Unfähigkeit zu berücksichtigen, einige Nachrichten bei der Zustellung zu verarbeiten. Die Funktion wird auf Best-Effort-Basis angewendet und jede Nachricht wird separat auf die Richtlinie für Wiederholungsversuche hin ausgewertet.
Wir raten davon ab, diese Funktion zu verwenden, um die Zustellung von Nachrichten absichtlich zu verzögern. Wenn Sie eine große Anzahl von Nachrichten für ein Abo, das mit einer Wiederholungsrichtlinie konfiguriert ist, negativ bestätigen (nack), werden einige dieser Nachrichten möglicherweise mit weniger oder ohne Backoff zugestellt. Pub/Sub kann die Zustellung aller Nachrichten auch verlangsamen, wenn Sie eine große Anzahl von Nachrichten negativ bestätigen.
Wenn Sie die Zustellung planen müssen, sollten Sie Cloud Tasks verwenden.
Exponentiellen Backoff konfigurieren
Console
Beim Erstellen eines neuen Abos können Sie mit den folgenden Schritten eine Wiederholungsrichtlinie mit exponentiellem Backoff konfigurieren:
- Rufen Sie in der Google Cloud Console die Seite Pub/Sub-Abos auf.
Klicken Sie auf Abo erstellen.
Geben Sie im Feld Abo-ID einen Namen ein.
Informationen zum Benennen eines Abos finden Sie unter Richtlinien für die Benennung eines Themas oder Abos.
- Wählen Sie im Drop-down-Menü ein Thema aus oder erstellen Sie ein Thema.
Das Abo erhält Nachrichten aus dem Thema.
Wählen Sie einen Zustellungstyp aus.
Wählen Sie unter Wiederholungsrichtlinie die Option Nach exponentiellem Backoff wiederholen aus.
Geben Sie einen Minimalen Backoff und einen Maximalen Backoff zwischen 0 und 600 Sekunden ein.
Die Standardwerte betragen für den minimalen Backoff 10 Sekunden und für den maximalen Backoff 600 Sekunden.
- Klicken Sie auf Erstellen.
gcloud
Führen Sie den folgenden Befehl gcloud pubsub create
aus, um ein neues Abo mit einer Wiederholungsrichtlinie mit exponentiellem Backoff zu erstellen.
gcloud pubsub subscriptions create SUBSCRIPTION_ID \ --topic=TOPIC_ID \ --min-retry-delay=MIN_RETRY_DELAY \ --max-retry-delay=MAX_RETRY_DELAY
Ersetzen Sie Folgendes:
SUBSCRIPTION_ID
: Eine eindeutige ID für Ihr Abo.TOPIC_ID
: die ID des Themas, an das Sie das Abo anhängen möchten.MIN_RETRY_DELAY
: die minimale Backoff-Verzögerung für das Abo.MAX_RETRY_DELAY
: die maximale Backoff-Verzögerung für das Abo.
Nächste Schritte
- Weitergeleitete unzustellbare Nachrichten abrufen
- Pub/Sub-Anwendungen überwachen
- Konzepte der Nachrichtenübermittlung