Push-Abos

Dieses Dokument bietet einen Überblick über Push-Abos, den zugehörigen Workflow und die zugehörigen Eigenschaften.

Bei der Push-Zustellung initiiert Pub/Sub, wenn es Nachrichten zustellen soll, Anfragen bei Ihrer Abonnentenanwendung. Nachrichten werden an einen öffentlich adressierbaren Server oder einen Webhook, wie etwa eine HTTPS-POST-Anfrage, gesendet.

Push-Abos minimieren Abhängigkeiten von Pub/Sub-spezifischen Clientbibliotheken und Authentifizierungsmechanismen. Sie funktionieren auch gut mit serverlosen und automatisch skalierenden Diensttechnologien wie Cloud Run-Funktionen, Cloud Run und Google Kubernetes Engine.

Hinweis

Bevor Sie dieses Dokument lesen, sollten Sie mit Folgendem vertraut sein:

Workflow für Push-Abos

Bei einem Push-Abo initiiert ein Pub/Sub-Server eine Anfrage an Ihren Abonnentenclient, um Nachrichten zu senden.

Das folgende Bild zeigt den Workflow zwischen einem Abonnentenclient und einem Push-Abo.

Ablauf von Nachrichten für ein Push-Abo
Abbildung 3. Workflow für ein Push-Abo

Hier eine kurze Beschreibung des Workflows, der sich auf Abbildung 3 bezieht:

  1. Der Pub/Sub-Server sendet jede Nachricht als HTTPS-Anfrage an den Abonnentenclient an einem vorkonfigurierten Endpunkt. Diese Anfrage ist im Bild als PushRequest dargestellt.
  2. Der Endpunkt bestätigt die Nachricht, indem er einen HTTP-Erfolgsstatuscode zurückgibt. Wenn in der Antwort angegeben wird, dass der Vorgang nicht erfolgreich war, muss Pub/Sub die Nachrichten noch einmal senden. Diese Antwort wird im Bild als PushResponse angezeigt.
  3. Pub/Sub passt die Rate von Push-Anfragen anhand der Rate, mit der Erfolgsantworten empfangen werden, dynamisch an.

Attribute eines Push-Abos

Die Eigenschaften, die Sie für ein Push-Abo konfigurieren, bestimmen, wie Sie Nachrichten in Ihr Abo schreiben. Weitere Informationen finden Sie unter Abo-Attribute.

So empfangen Push-Endpunkte Nachrichten

Wenn Pub/Sub eine Nachricht an einen Push-Endpunkt sendet, können Sie sie unverpackt oder verpackt senden. Standardmäßig werden Nachrichten umgebrochen gesendet.

  • Umschlossen Pub/Sub sendet die Nachricht im JSON-Text einer POST-Anfrage.
  • Unwrapped. Pub/Sub sendet die Rohdaten der Nachricht direkt als HTTP-Textkörper.

Die folgenden Beispiele zeigen einen umschlossenen Text einer JSON-POST-Anfrage an einen Push-Endpunkt, der den String Hello there im Feld message.data enthält.

Der Text einer POST-Anfrage ist ein JSON-Objekt. Die Nachrichtendaten befinden sich im Feld message.data und sind Base64-codiert.

Beispiel für eine Anfrage mit den Mindestwerten

  {
      "message": {
          "data": "SGVsbG8gQ2xvdWQgUHViL1N1YiEgSGVyZSBpcyBteSBtZXNzYWdlIQ==",
          "messageId": "2070443601311540",
          "message_id": "2070443601311540",
          "publishTime": "2021-02-26T19:13:55.749Z",
          "publish_time": "2021-02-26T19:13:55.749Z"
      },
    "subscription": "projects/myproject/subscriptions/mysubscription"
  }
  

Beispiel für eine Anfrage mit den Maximalwerten

In diesem Beispiel werden die aktuellen Höchstwerte dargestellt, die sich im Laufe der Zeit ändern können. Außerdem kann die Attributzuordnung eine Vielzahl von Werten enthalten.

  {
      "deliveryAttempt": 5,
      "message": {
          "attributes": {
              "key": "value"
          },
          "data": "SGVsbG8gQ2xvdWQgUHViL1N1YiEgSGVyZSBpcyBteSBtZXNzYWdlIQ==",
          "messageId": "2070443601311540",
          "message_id": "2070443601311540",
          "orderingKey": "key",
          "publishTime": "2021-02-26T19:13:55.749Z",
          "publish_time": "2021-02-26T19:13:55.749Z"
      },
    "subscription": "projects/myproject/subscriptions/mysubscription"
}

Wenn Sie Nachrichten von Push-Abos erhalten möchten, verwenden Sie einen Webhook und verarbeiten Sie die POST-Anfragen, die Pub/Sub an den Push-Endpunkt sendet. Weitere Informationen zum Verarbeiten dieser POST-Anfragen in App Engine finden Sie unter Pub/Sub-Nachrichten schreiben und beantworten.

Wenn Sie eine Push-Anfrage erhalten haben, geben Sie einen HTTP-Statuscode zurück. Um die Nachricht zu bestätigen, geben Sie einen der folgenden Statuscodes zurück:

  • 102
  • 200
  • 201
  • 202
  • 204

Wenn Sie eine negative Bestätigung für die Nachricht senden möchten, geben Sie einen anderen Statuscode zurück. Wenn Sie eine negative Bestätigung senden oder die Bestätigungsfrist abläuft, sendet Pub/Sub die Nachricht noch einmal. Sie können die Bestätigungsfrist für einzelne Nachrichten, die Sie von Push-Abos erhalten, nicht ändern.

Authentifizierung für Push-Abos

Wenn ein Push-Abo die Authentifizierung verwendet, signiert der Pub/Sub-Dienst ein JWT und sendet das JWT im Autorisierungsheader der Push-Anfrage.

Weitere Informationen zum Einrichten der Authentifizierung finden Sie unter Push-Anfragen authentifizieren.

Zustellung von Nachrichten beenden und fortsetzen

Sie können das Senden von Anfragen an den Push-Endpunkt in Pub/Sub vorübergehend anhalten. Ändern Sie dazu das Abo in Pull. Es kann einige Minuten dauern, bis die Änderung wirksam wird.

Zum Fortsetzen der Push-Zustellung wählen Sie für die URL wieder einen gültigen Endpunkt aus. Löschen Sie das Abo, wenn Sie die Zustellung dauerhaft stoppen möchten.

Push-Backoff

Wenn ein Push-Abonnent zu viele negative Bestätigungen sendet, stellt Pub/Sub Nachrichten möglicherweise mit einem Push-Backoff zu. Wenn Pub/Sub einen Push-Backoff verwendet, werden keine Nachrichten mehr für eine bestimmte Zeit zugestellt. Dieser Zeitraum kann zwischen 100 Millisekunden und 60 Sekunden liegen. Nach Ablauf der Zeit beginnt Pub/Sub wieder mit der Zustellung von Nachrichten.

Beim Push-Backoff wird ein exponentieller Backoff-Algorithmus verwendet, um die Verzögerung zu bestimmen, die Pub/Sub zwischen dem Senden von Nachrichten verwendet. Diese Zeit wird anhand der Anzahl negativer Bestätigungen berechnet, die Push-Abonnenten senden.

Wenn ein Push-Abonnent beispielsweise fünf Nachrichten pro Sekunde empfängt und eine negative Bestätigung pro Sekunde sendet, stellt Pub/Sub Nachrichten etwa alle 500 Millisekunden zu. Wenn der Push-Abonnent fünf negative Bestätigungen pro Sekunde sendet, stellt Pub/Sub Nachrichten alle 30 bis 60 Sekunden zu.

Beachten Sie die folgenden Hinweise zum Push-Backoff:

  • Die Push-Backoff-Funktion kann nicht aktiviert oder deaktiviert werden. Sie können auch die Werte, die zur Berechnung der Verzögerung verwendet werden, nicht ändern.
  • Die folgenden Aktionen können dazu führen, dass die Backoff-Trigger ausgelöst werden:
    • Wenn eine negative Bestätigung empfangen wird.
    • Wenn die Bestätigungsfrist für eine Nachricht abläuft.
  • Der Push-Backoff gilt für alle Nachrichten in einem Abo (global).

Zustellungsrate

Pub/Sub passt die Anzahl der gleichzeitigen Push-Anfragen mithilfe eines Algorithmus für einen langsamen Start an. Die maximal zulässige Anzahl an gleichzeitigen Push-Anfragen ist das Push-Fenster. Das Push-Fenster erhöht sich bei jeder erfolgreichen Übermittlung und verringert sich bei jedem Fehler. Das System beginnt mit einer kleinen einstelligen Fenstergröße.

Wenn ein Abonnent Nachrichten bestätigt, wird das Fenster exponentiell erhöht. Bei Abos, bei denen mehr als 99% der Nachrichten von den Abonnenten bestätigt werden und die durchschnittliche Latenz weniger als eine Sekunde beträgt, sollte das Push-Fenster so erweitert werden, dass es mit dem Publish-Durchsatz mithalten kann.

Die Latenz der Push-Anfrage umfasst Folgendes:

  • Die Umlauflatenzen zwischen Pub/Sub-Servern und dem Push-Endpunkt

  • Die Verarbeitungszeit des Abonnenten

Nach 3.000 ausstehenden Nachrichten pro Region erhöht sich das Fenster linear,um zu verhindern, dass der Push-Endpunkt zu viele Nachrichten erhält. Wenn die durchschnittliche Latenz mehr als eine Sekunde beträgt oder der Abonnent weniger als 99% der Anfragen bestätigt, sinkt das Fenster auf das untere Limit von 3.000 ausstehenden Nachrichten.

Weitere Informationen zu den Messwerten, die Sie für das Monitoring der Push-Zustellung verwenden können, finden Sie unter Push-Abos beobachten.

Kontingente und Limits

Push-Abos unterliegen einer Reihe von Kontingent- und Ressourcenbeschränkungen.

Nächste Schritte