Schnellstart: Nachrichten wiedergeben

In dieser Anleitung finden Sie Beispiele für die Wiedergabe von Pub/Sub API-Nachrichten.

gcloud-Befehlszeilenoberfläche verwenden

gcloud lässt sich am einfachsten in der Cloud Shell verwenden. Sie können auch das im Cloud SDK enthaltene Befehlszeilentool verwenden. Die Einrichtungsvoraussetzungen für das Cloud SDK werden automatisch erfüllt, wenn Sie eine neue Compute Engine-Maschineninstanz mit Zugriffsbereichen erstellen, die alle Cloud APIs und das Standard-Debian-Image enthalten. 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 auch im Abschnitt zu gcloud pubsub in der Referenz zu gcloud.

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 auch in anderen Abos bis zum selben Snapshot suchen, wenn das Thema des Abos mit dem 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. Standardmäßig werden Nachrichten sieben Tage gespeichert. Sie können die Dauer mit message-retention-duration verkürzen, aber nicht auf weniger als 10 Minuten. Weitere Informationen finden Sie im Abschnitt zur Zeitstempelsuche unter Nachrichten wiedergeben und verwerfen.

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:

TS_FORMAT=%Y-%m-%dT%H:%M:%SZ
gcloud pubsub subscriptions seek seek-demo-sub --time=$(date -u -d '-10 min' +$TS_FORMAT)

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

Mit der Cloud Console

Auf der Detailseite zum Abo in der Cloud Console können Sie ebenfalls Snapshots erstellen oder bis zu vorhandenen Snapshots suchen. Regeln zur Benennung von Snapshots finden Sie unter Ressourcennamen.

Auf der Seite

Im Suchdialogfeld können Sie auswählen, ob Sie bis zu einem bestimmten Zeitpunkt oder bis zu einem Snapshot suchen möchten:

Suchen Sie entweder einen Snapshot oder einen Zeitpunkt, um Nachrichten noch einmal wiederzugeben.

Snapshots können auch auf der Detailseite eines Themas verwaltet werden:

Um sich die Details eines Themas anzusehen, klicken Sie auf der Seite

Wie ist es gelaufen?

Weitere Ressourcen und Links finden Sie auf der Pub/Sub-Supportseite.

Nächste Schritte

Siehe Nachrichten wiedergeben und verwerfen.