Nachricht in Pub/Sub durch Suchen zu einem Snapshot oder Zeitstempel noch einmal wiedergeben
Pub/Sub kann die Nachrichten nicht abrufen, nachdem Sie sie bestätigt haben. Manchmal kann es jedoch erforderlich sein, die bestätigten Nachrichten wiederzugeben, z. B. wenn Sie eine fälschlicherweise bestätigt haben. Anschließend können Sie mit der Funktion Suchen zuvor bestätigte Nachrichten als nicht bestätigt markieren und Pub/Sub dazu zwingen, diese Nachrichten noch einmal zuzustellen. Sie können mit „seek“ auch die nicht bestätigten Nachrichten löschen, indem Sie ihren Status in „Bestätigt“ ändern.
Suchen Sie einen Snapshot oder einen Zeitstempel, um die Nachrichten in einem Abo wiederzugeben. In diesem Leitfaden wird anhand von Beispielen gezeigt, wie zuvor bestätigte Pub/Sub-Nachrichten mit der Suchfunktion wiedergegeben werden.
Klicken Sie auf Anleitung, um die Schritt-für-Schritt-Anleitung für diese Aufgabe direkt in der Google Cloud Console auszuführen:
Hinweise
- Melden Sie sich bei Ihrem Google Cloud-Konto an. Wenn Sie mit Google Cloud noch nicht vertraut sind, erstellen Sie ein Konto, um die Leistungsfähigkeit unserer Produkte in der Praxis sehen und bewerten zu können. Neukunden erhalten außerdem ein Guthaben von 300 $, um Arbeitslasten auszuführen, zu testen und bereitzustellen.
-
Richten Sie ein Google Cloud Console-Projekt ein.
Führen Sie folgende Schritte per Mausklick aus:
- Ein Projekt erstellen oder auswählen.
- Aktivieren Sie die Pub/Sub API für dieses Projekt.
Sie können diese Ressourcen jederzeit in der Google Cloud Console aufrufen und verwalten.
- Installieren Sie die Google Cloud CLI.
-
Führen Sie folgenden Befehl aus, um die gcloud CLI zu initialisieren:
gcloud init
-
Richten Sie ein Google Cloud Console-Projekt ein.
Führen Sie folgende Schritte per Mausklick aus:
- Ein Projekt erstellen oder auswählen.
- Aktivieren Sie die Pub/Sub API für dieses Projekt.
Sie können diese Ressourcen jederzeit in der Google Cloud Console aufrufen und verwalten.
- Installieren Sie die Google Cloud CLI.
-
Führen Sie folgenden Befehl aus, um die gcloud CLI zu initialisieren:
gcloud init
gcloud
-Befehlszeilenoberfläche verwenden
gcloud lässt sich am einfachsten in der Cloud Shell verwenden. Sie können auch das Befehlszeilentool verwenden, das im Lieferumfang der Google Cloud CLI enthalten ist. Die Voraussetzungen für die Einrichtung der gcloud CLI sind automatisch erfüllt, wenn Sie eine neue Compute Engine-Maschineninstanz mit Zugriffsbereichen erstellen, die alle Cloud APIs und das Debian-Standard-Image umfassen. Am einfachsten erstellen Sie sie über die Compute Engine-Benutzeroberfläche. Für den Rest dieses Dokuments gehen wir davon aus, dass Sie eines dieser Befehlszeilentools verwenden.
Weitere Informationen zur Verwendung von gcloud finden Sie im Schnellstart zu gcloud.
Eine vollständige Liste der Pub/Sub-gcloud
-Befehle finden Sie in der gcloud-Referenz im Abschnitt zu gcloud Pub/Sub.
Snapshots erstellen und bis Snapshot suchen
Erstellen Sie ein Thema und ein Abo. Die Interaktion ist besser, wenn Sie eine kurze Bestätigungsfrist angeben:
gcloud pubsub topics create seek-demo-topic gcloud pubsub subscriptions create seek-demo-sub --topic=seek-demo-topic --ack-deadline=10
Bisher wurden keine Nachrichten im Abo bestätigt. Erfassen Sie diesen Zustand, indem Sie einen Snapshot erstellen:
gcloud pubsub snapshots create my-snapshot --subscription=seek-demo-sub gcloud pubsub snapshots list
Nun wird eine Nachricht veröffentlicht, abgerufen und bestätigt:
gcloud pubsub topics publish seek-demo-topic --message 'hello, world' gcloud pubsub subscriptions pull --auto-ack seek-demo-sub
Nachfolgende Abrufe mit Pull liefern keine neuen Nachrichten. Kurzzeitige Duplikate sind möglich:
gcloud pubsub subscriptions pull --auto-ack seek-demo-sub
Sie können die Nachricht wiederherstellen, indem Sie im Abo bis zum Snapshot suchen. Die Nachricht wird unter Umständen nicht sofort zugestellt: Pub/Sub garantiert keine Nachrichtenzustellungslatenz. Es wird jedoch garantiert, dass die im Snapshot enthaltenen Nachrichten mindestens einmal zugestellt werden:
gcloud pubsub subscriptions seek seek-demo-sub --snapshot=my-snapshot gcloud pubsub subscriptions pull seek-demo-sub --auto-ack
Sie können nach anderen Abos zum selben Snapshot suchen, solange das Thema des Abos mit dem Thema des Snapshots identisch ist:
gcloud pubsub subscriptions create seek-demo-sub2 --topic=seek-demo-topic --ack-deadline=10 gcloud pubsub subscriptions seek seek-demo-sub2 --snapshot=my-snapshot
Beim Abrufen von seek-demo-sub2
werden jetzt Nachrichten ausgegeben, die vor der Erstellung von seek-demo-sub2
veröffentlicht wurden:
gcloud pubsub subscriptions pull seek-demo-sub2 --auto-ack
Bereinigen Sie zum Schluss die Snapshots:
gcloud pubsub snapshots delete my-snapshot
Bis Zeitstempel suchen
Sie haben auch die Möglichkeit, alle bestätigten Nachrichten zu suchen, die bis zu einem bestimmten Zeitstempel aufbewahrt wurden, und dann wiederzugeben. Um einen Zeitstempel zu suchen, müssen Sie zuerst das Abo so konfigurieren, dass bestätigte Nachrichten mithilfe von retain-acked-messages
aufbewahrt werden. Wenn retain-acked-messages
festgelegt ist, speichert Pub/Sub bestätigte Nachrichten sieben Tage lang.
Dieser Schritt muss nur ausgeführt werden, wenn Sie bis zu einem Zeitstempel suchen. Für die Suchfunktion bis Snapshot ist er nicht relevant.
gcloud pubsub subscriptions update seek-demo-sub --retain-acked-messages
Nun wird eine Nachricht veröffentlicht, abgerufen und bestätigt:
gcloud pubsub topics publish seek-demo-topic --message 'hello, world' gcloud pubsub subscriptions pull --auto-ack seek-demo-sub
Beim nächsten Abruf mit Pull sollten keine Nachrichten zurückgegeben werden:
gcloud pubsub subscriptions pull seek-demo-sub
Suchen Sie jetzt im Abo zeitlich zurück, um die Nachricht wiederherzustellen. Das arithmetische Datums-Flag in den GNU- und BSD-Versionen (MacOS) des Date-Befehls weicht ab:
export TS_FORMAT=%Y-%m-%dT%H:%M:%SZ gcloud pubsub subscriptions seek seek-demo-sub --time=$(date -u -d '-10 min' +$TS_FORMAT)
Weitere Informationen zu unterstützten Zeitformaten finden Sie unter gcloud topic datetimes.
Der nachfolgende Abruf mit Pull sollte die Nachricht nun wieder zurückgeben:
gcloud pubsub subscriptions pull --auto-ack seek-demo-sub
Sie haben auch die Möglichkeit, mit Seek die Zustellung aller Nachrichten zu überspringen, die vor einem bestimmten Zeitpunkt, beispielsweise dem aktuellen Zeitpunkt, veröffentlicht wurden. Suchen Sie dazu im Abo bis zur aktuellen Uhrzeit. Alle Nachrichten in der Vergangenheit werden damit als bestätigt markiert:
gcloud pubsub topics publish seek-demo-topic --message 'hello, world' gcloud pubsub subscriptions seek seek-demo-sub --time=$(date -u +$TS_FORMAT)
Nach einer gewissen Verzögerung (~60 Sekunden) wird die Nachricht nicht mehr zugestellt. Sie können das überprüfen, indem Sie den Pull-Befehl wiederholt ausführen, ohne die Nachricht zu bestätigen:
gcloud pubsub subscriptions pull seek-demo-sub
Cloud Console verwenden
Auf der Detailseite des Abos in der Cloud Console können Sie Snapshots erstellen oder zu vorhandenen Snapshots suchen. Regeln zur Benennung von Snapshots finden Sie unter Ressourcennamen.
Snapshot erstellen
Rufen Sie in der Google Cloud Console die Seite Pub/Sub-Abos auf.
Wählen Sie ein Abo aus der Liste aus.
Klicken Sie auf Snapshot erstellen.
Geben Sie eine ID für den Snapshot ein und klicken Sie zum Speichern auf Erstellen.
Snapshots können in der Google Cloud Console auf der Seite „Snapshots“ angesehen werden. Snapshots können auch auf der Detailseite eines Themas verwaltet werden.
Abo wiederholen
Im Dialogfeld Nachrichten wiedergeben können Sie zu einem vorherigen Zeitpunkt oder zu einem gespeicherten Snapshot suchen. So öffnen Sie das Dialogfeld:
Rufen Sie in der Google Cloud Console die Seite Pub/Sub-Abos auf.
Wählen Sie ein Abo aus der Liste aus.
Klicken Sie auf Nachrichten wiedergeben.
Wählen Sie unter Suchen entweder Zu einem vorherigen Zeitpunkt oder Zu einem Snapshot aus und wählen Sie dann den Zeitpunkt oder den Snapshot für die Suche aus.
Klicken Sie auf Suchen, um Nachrichten noch einmal wiederzugeben.
Wie ist es gelaufen?
Weitere Ressourcen und Links finden Sie auf der Pub/Sub-Supportseite.