Wiederholungsversuche bei der Nachrichtenzustellung Amazon SNS - Amazon Simple Notification Service

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Wiederholungsversuche bei der Nachrichtenzustellung Amazon SNS

Amazon SNS definiert eine Zustellungsrichtlinie für jedes Zustellungsprotokoll. Die Zustellungsrichtlinie definiert, wie Amazon SNS die Zustellung von Nachrichten bei serverseitigen Fehlern (wenn das den abonnierten Endpunkt hostenden System nicht verfügbar ist) wiederholt. Wenn die Zustellungsrichtlinie erschöpft ist, stoppt Amazon SNS den erneuten Versand und verwirft die Nachricht, es sei denn, dem Abonnement ist eine Warteschlange für unzustellbare Nachrichten angehängt. Weitere Informationen finden Sie unter Amazon SNS Queues für unzustellbare Nachrichten (DLQs).

Zustellungsprotokolle und -richtlinien

Anmerkung
  • Mit Ausnahme von HTTP/S können Sie Amazon SNS-definierte Zustellungsrichtlinien nicht ändern. Nur HTTP/S unterstützt benutzerdefinierte Richtlinien. Siehe Erstellen einer HTTP/S-Zustellungsrichtlinie.

  • Amazon SNS wendet Jittering bei Zustellungswiederholungen an. Weitere Informationen finden Sie im Beitrag Exponential Backoff and Jitter im AWS Architecture Blog.

  • Die Gesamtdauer der Richtlinienwiederholung für einen HTTP/S-Endpunkt darf nicht mehr als 3.600 Sekunden betragen. Dies ist ein hartes Limit, das nicht erhöht werden kann.

Endpunkttyp Zustellungsprotokolle Phase „Sofortiger Wiederholungsversuch (keine Verzögerung)“ Phase „Pre-Backoff“ Phase „Backoff“ Phase „Post-Backoff“ Gesamtzahl der Versuche
AWS verwaltete Endpunkte Amazon Data Firehose¹ 3-mal, ohne Verzögerung 2-mal, mit 1 Sekunde Verzögerung 10-mal, mit exponentiellem Backoff von 1 Sekunde bis 20 Sekunden 100.000-mal, mit 20 Sekunden Verzögerung 100.015-mal, über 23 Tage
AWS Lambda
Amazon SQS
Vom Kunden verwaltete Endpunkte SMTP 0-mal, ohne Verzögerung 2-mal, mit 10 Sekunden Verzögerung 10-mal, mit exponentiellem Backoff von 10 Sekunden bis 600 Sekunden (10 Minuten) 38-Mal, mit 600 Sekunden (10 Minuten) Verzögerung 50 Versuche, über 6 Stunden
SMS
Mobile Push

¹ Für Drosselungsfehler mit dem Firehose-Protokoll verwendet Amazon SNS dieselben Lieferrichtlinien wie für vom Kunden verwaltete Endgeräte.

Stufen von Zustellungsrichtlinien

Das folgende Diagramm zeigt die Phasen einer Zustellungsrichtlinie.

Jede Zustellungsrichtlinie umfasst vier Phasen.

  1. Phase „Sofortiger Wiederholungsversuch (keine Verzögerung) – Diese Phase erfolgt unmittelbar nach dem ersten Zustellungsversuch. Es gibt keine Verzögerung zwischen den Wiederholungen in dieser Phase.

  2. Pre-Backoff-Phase – Diese Phase folgt direkt auf die Retry-Phase. Amazon SNS verwendet diese Phase für eine Reihe von Wiederholungsversuchen, bevor eine Backoff-Funktion angewendet wird. Diese Phase gibt die Anzahl der Wiederholungsversuche und die Verzögerung dazwischen an.

  3. Backoff-Phase – Diese Phase steuert die Verzögerung zwischen den Wiederholungsversuchen mithilfe der Funktion „retry-backoff“. Diese Phase legt eine Mindestverzögerung, eine Maximalverzögerung und eine retry-backoff-Funktion fest, die definiert, wie schnell die Verzögerung vom Mindest- zum Maximalwert steigt. Die backoff-Funktion kann arithmetisch, exponentiell, geometrisch oder linear sein.

  4. Post-Backoff-Phase – Diese Phase folgt auf die Backoff-Phase. Sie gibt die Anzahl der Wiederholungsversuche und die Verzögerung dazwischen an. Dies ist die letzte Phase.

Erstellen einer HTTP/S-Zustellungsrichtlinie

Mit einer Zustellungsrichtlinie und deren vier Phasen können Sie festlegen, wie Amazon SNS die Zustellung von Nachrichten an HTTP/S-Endpunkte wiederholt. Mit Amazon SNS können Sie die standardmäßige Wiederholungsrichtlinie für HTTP-Endpunkte außer Kraft setzen, wenn Sie beispielsweise die Richtlinie basierend auf der Kapazität Ihres HTTP-Servers anpassen möchten.

Sie können Ihre HTTP/S-Zustellungsrichtlinie als JSON-Objekt auf Abonnement- oder Themenebene festlegen. Wenn Sie die Richtlinie auf Themenebene definieren, gilt sie für alle HTTP/S-Abonnements, die dem Thema zugeordnet sind. Wenn Sie die Lieferrichtlinie auf Abonnementebene festlegen möchten, können Sie entweder die Subscribe- oder die SetSubscriptionAttributes-API-Aktion verwenden. Wenn Sie die Bereitstellungsrichtlinie auf Themenebene festlegen möchten, können Sie entweder die CreateTopic- oder die SetTopicAttributes-API-Aktion verwenden. Alternativ können Sie die Ressource auch in Ihren Vorlagen verwenden. AWS::SNS::Subscription AWS CloudFormation

Sie sollten Ihre Zustellungsrichtlinie entsprechend der Kapazität Ihres HTTP/S-Servers anpassen. Sie können die Richtlinie als Themen- oder Abonnementattribut festlegen. Wenn alle HTTP/S-Abonnements in Ihrem Thema auf denselben HTTP/S-Server weisen, wird empfohlen, die Zustellungsrichtlinie als Themenattribut festzulegen, damit sie für alle HTTP/S-Abonnements im Thema gültig bleibt. Andernfalls müssen Sie für jedes HTTP/S-Abonnement in Ihrem Thema eine Zustellungsrichtlinie erstellen, je nach Kapazität des HTTP/S-Servers, auf den die Richtlinie weist.

Sie können in der Anforderungsrichtlinie auch den Content-Type-Header festlegen, um den Medientyp der Benachrichtigung anzugeben. Standardmäßig sendet Amazon SNS alle Benachrichtigungen an HTTP/S-Endpunkte, wobei der Inhaltstyp auf text/plain; charset=UTF-8 festgelegt ist. Mit Amazon SNS können Sie die Standardanforderungsrichtlinie außer Kraft setzen. Weitere Informationen zum unterstützten headerContentType und zu den Einschränkungen finden Sie in der nachfolgenden Tabelle.

Das folgende JSON-Objekt stellt eine Zustellungsrichtlinie dar, mit der Amazon SNS angewiesen wird, einen fehlgeschlagenen HTTP/S-Zustellungsversuch wie folgt zu wiederholen:

  1. 3-mal sofort in der Phase ohne Verzögerung

  2. 2-mal (mit 1 Sekunde Verzögerung) in der Pre-Backoff-Phase

  3. 10-mal (mit exponentiellem Backoff von 1 Sekunde bis 60 Sekunden)

  4. 35-mal (mit 60 Sekunden Verzögerung) in der Post-Backoff-Phase

Amazon SNS unternimmt insgesamt 50 Versuche, bevor die Nachricht verworfen wird. Um die Nachricht zu behalten, nachdem die in der Zustellungsrichtlinie angegebenen Wiederholungsversuche erschöpft sind, konfigurieren Sie Ihr Abonnement so, dass unzustellbare Nachrichten in eine Dead-Letter-Warteschlange (Warteschlange für unzustellbare Nachrichten; DLQ) verschoben werden. Weitere Informationen finden Sie unter Amazon SNS Queues für unzustellbare Nachrichten (DLQs).

Anmerkung

Diese Zustellungsrichtlinie weist Amazon SNS außerdem an, die Anzahl der Zustellungen auf maximal 10 pro Sekunde zu drosseln mit der maxReceivesPerSecond Eigenschaft. Diese Selbstdrosselungsrate kann dazu führen, dass mehr Nachrichten veröffentlicht (eingehender Verkehr) als zugestellt (ausgehender Verkehr) werden. Wenn mehr eingehender Datenverkehr als ausgehender Datenverkehr vorhanden ist, kann Ihr Abonnement einen großen Nachrichtenrückstand ansammeln, was zu einer hohen Nachrichtenzustellungslatenz führen kann. Stellen Sie in Ihren Zustellungsrichtlinien sicher, dass Sie einen Wert fürmaxReceivesPerSecond festlegen, der sich nicht negativ auf Ihre Arbeitslast auswirkt.

Anmerkung

Diese Bereitstellungsrichtlinie überschreibt die standardmäßige Inhaltstyp für die HTTP/S-Benachrichtigung zu application/json.

{ "healthyRetryPolicy": { "minDelayTarget": 1, "maxDelayTarget": 60, "numRetries": 50, "numNoDelayRetries": 3, "numMinDelayRetries": 2, "numMaxDelayRetries": 35, "backoffFunction": "exponential" }, "throttlePolicy": { "maxReceivesPerSecond": 10 }, "requestPolicy": { "headerContentType": "application/json" } }

Die Bereitstellungsrichtlinie umfasst eine Wiederholungs-, eine Drosselungs- und eine Anforderungsrichtlinie. Insgesamt gibt es 9 Attribute in einer Zustellungsrichtlinie.

Richtlinie Beschreibung Constraint
minDelayTarget Die Mindestverzögerung bei einem Wiederholungsversuch.

Einheit: Sekunden

1 bis zur Maximalverzögerung

Standard: 20

maxDelayTarget Die Maximalverzögerung bei einem Wiederholungsversuch.

Einheit: Sekunden

Mindestverzögerung auf 3.600

Standard: 20

numRetries Die Gesamtzahl der Wiederholungsversuche, einschließlich sofortiger Wiederholungsversuche sowie, Pre-Backoff-, Backoff- und Post-Backoff-Wiederholungsversuchen. 0 bis 100

Standard: 3

numNoDelayRetries Die Anzahl der Wiederholungen, die sofort durchgeführt werden sollen, ohne Verzögerung zwischen ihnen. 0 oder höher

Standard: 0

numMinDelayRetries Die Anzahl der Wiederholungsversuche in der Pre-Backoff-Phase mit der angegebenen Mindestverzögerung dazwischen. 0 oder höher

Standard: 0

numMaxDelayRetries Die Anzahl der Wiederholungsversuche in der Post-Backoff-Phase mit der Maximalverzögerung dazwischen. 0 oder höher

Standard: 0

backoffFunction Das Modell für Backoff zwischen Wiederholungsversuchen.

Eine von vier Optionen:

  • Arithmetisch

  • Exponentiell

  • Geometrisch

  • Linear

Standard: linear

maxReceivesPerSecond Die maximale Anzahl der Zustellungen pro Sekunde pro Abonnement. 1 oder höher

Standard: Keine Drosselung

headerContentType

Der Inhaltstyp der Benachrichtigung, die an HTTP/S-Endpunkte gesendet wird.

Wenn die Anforderungsrichtlinie nicht definiert ist, wird der Inhaltstyp standardmäßig auf text/plain; charset=UTF-8 festgelegt.

Wenn die Bereitstellung von Rohnachrichten für ein Abonnement deaktiviert ist (Standard) oder wenn die Bereitstellungsrichtlinie auf Themenebene definiert ist, werden die Header-Inhaltstypen application/json und text/plain unterstützt.

Wenn die Bereitstellung von Rohnachrichten für ein Abonnement aktiviert ist, werden die folgenden Inhaltstypen unterstützt:

  • text/css

  • text/csv

  • text/html

  • text/plain

  • text/xml

  • application/atom+xml

  • application/json

  • Anwendung/​octet-​stream

  • application/soap+xml

  • Anwendung/ x-www-form-urlencoded

  • application/xhtml+xml

  • application/xml

Amazon SNS verwendet die folgende Formel, um die Anzahl der Wiederholungsversuche in der Backoff-Phase zu berechnen:

numRetries - numNoDelayRetries - numMinDelayRetries - numMaxDelayRetries

Sie können die Häufigkeit der Wiederholungsversuche in der Backoff-Phase mithilfe von drei Parametern steuern.

  • minDelayTarget – Definiert die Verzögerung, die mit dem ersten Wiederholungsversuch in der Backoff-Phase verbunden ist.

  • maxDelayTarget – Definiert die Verzögerung, die mit dem letzten Wiederholungsversuch in der Backoff-Phase verbunden ist.

  • backoffFunction – Definiert den Algorithmus, den Amazon SNS zum Berechnen der Abstände im Zusammenhang mit allen Wiederholversuchen zwischen dem ersten und letzten Wiederholungsversuch in der Backoff-Phase verwendet. Sie können eine von vier retry-backoff-Funktionen verwenden.

Das folgende Diagramm zeigt, wie sich jede Wiederholungs-Backoff-Funktion auf die Verzögerung auswirkt, die mit Wiederholungen während der Backoff-Phase verbunden ist: Eine Zustellungsrichtlinie, bei der die Gesamtzahl der Wiederholungen auf 10 festgelegt ist, die minimale Verzögerung auf 5 Sekunden und die maximale Verzögerung auf 260 Sekunden festgelegt ist. Die vertikale Achse stellt die Verzögerung in Sekunden für jede der 10 Wiederholungen dar. Die horizontale Achse stellt die Anzahl der Wiederholungsversuche vom ersten bis zum zehnten Versuch dar.