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-Warteschlangen mit unzustellbaren Briefen.
Zustellungsprotokolle und -richtlinien
Anmerkung
-
Abgesehen davon können Sie HTTP/S die SNS-defined Amazon-Lieferrichtlinien nicht ändern. HTTP/S Unterstützt nur benutzerdefinierte Richtlinien. Siehe Erstellung einer Lieferrichtlinie HTTP/S.
-
Amazon SNS wendet Jittering bei Zustellungswiederholungen an. Weitere Informationen finden Sie im Beitrag Exponential Backoff and Jitter
im AWS Architecture Blog. -
Die Gesamtdauer für den erneuten Versuch einer Richtlinie für einen HTTP/S Endpunkt darf 3.600 Sekunden nicht überschreiten. Dies ist ein hartes Limit, das nicht erhöht werden kann.
| Endpunkttyp | Zustellungsprotokolle | Phase „Sofortiger Wiederholungsversuch (keine Verzögerung)“ | Pre-backoff Phase | Phase „Backoff“ | Post-backoff Phase | Gesamtzahl der Versuche |
|---|---|---|---|---|---|---|
| AWS verwaltete Endpunkte | ¹ | 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 |
¹ Bei Drosselungsfehlern mit dem Firehose-Protokoll verwendet Amazon SNS dieselbe Versandrichtlinie wie für vom Kunden verwaltete Endgeräte.
Stufen von Zustellungsrichtlinien
Das folgende Diagramm zeigt die Phasen einer Zustellungsrichtlinie.
Jede Zustellungsrichtlinie umfasst vier Phasen.
-
Phase der sofortigen Wiederholung (ohne Verzögerung) — Diese Phase erfolgt unmittelbar nach dem ersten Zustellversuch. Es gibt keine Verzögerung zwischen den Wiederholungen in dieser Phase.
-
Pre-backoff Phase — Diese Phase folgt auf die Phase der sofortigen Wiederholung. 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.
-
Backoff-Phase — In dieser Phase wird die Verzögerung zwischen den Wiederholungsversuchen mithilfe der Retry-Backoff-Funktion gesteuert. 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.
-
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.
Erstellung einer Lieferrichtlinie HTTP/S
Sie können mithilfe einer Zustellungsrichtlinie mit vier Phasen definieren, wie Amazon SNS die Nachrichtenzustellung an HTTP/S Endpunkte wiederholt: verzögerungsfrei, vor dem Backoff, Backoff und Post-Backoff. Mit dieser Richtlinie können Sie die Standardeinstellungen für Wiederholungsversuche außer Kraft setzen und sie an die Kapazität Ihres HTTP-Servers anpassen.
Sie können Ihre HTTP/S Bereitstellungsrichtlinie entweder auf Themen - oder Abonnementebene als JSON-Objekt definieren:
-
Topic-level Richtlinie — Gilt für alle HTTP/S Abonnements, die mit dem Thema verknüpft sind. Verwenden Sie die
CreateTopicoderSetTopicAttributesAPI-Aktion, um diese Richtlinie festzulegen. -
Subscription-level Richtlinie — Gilt nur für ein bestimmtes Abonnement. Verwenden Sie die
SubscribeoderSetSubscriptionAttributesAPI-Aktion, um diese Richtlinie festzulegen.
Alternativ können Sie auch die Ressource AWS: :SNS: :Subscription in Ihren Vorlagen verwenden. CloudFormation
Sie sollten Ihre Lieferrichtlinien an die Kapazität Ihres HTTP/S Servers anpassen:
-
Ein Server für alle Abonnements — Wenn alle HTTP/S Abonnements in einem Thema denselben Server verwenden, legen Sie die Übermittlungsrichtlinie als Themenattribut fest, um die Konsistenz aller Abonnements sicherzustellen.
-
Verschiedene Server für Abonnements — Wenn Abonnements auf verschiedene Server abzielen, erstellen Sie für jedes Abonnement eine eigene Bereitstellungsrichtlinie, die auf die Kapazität des jeweiligen Servers zugeschnitten ist.
Sie können den Content-Type Header auch in der Anforderungsrichtlinie festlegen, um den Medientyp der Benachrichtigung anzugeben. Standardmäßig sendet Amazon SNS alle Benachrichtigungen an HTTP/S Endpunkte, deren Inhaltstyp auf eingestellt ist. text/plain; charset=UTF-8 Sie können diese Standardeinstellung jedoch mithilfe des headerContentType Felds in der Anforderungsrichtlinie überschreiben.
Das folgende JSON-Objekt definiert eine Übermittlungsrichtlinie mit Wiederholungsversuchen, die in vier Phasen strukturiert sind:
-
No-delay Phase — Versuchen Sie es sofort dreimal erneut.
-
Pre-backoff Phase — Wiederholen Sie den Vorgang zweimal im Abstand von 1 Sekunde.
-
Backoff-Phase — Wiederholen Sie den Vorgang 10 Mal mit exponentiellen Verzögerungen zwischen 1 und 60 Sekunden.
-
Post-backoff Phase — Wiederholen Sie den Vorgang 35 Mal mit einem festen Intervall von 60 Sekunden.
Amazon SNS unternimmt insgesamt 50 Versuche, eine Nachricht zuzustellen, bevor sie verworfen wird. Um Nachrichten beizubehalten, die nach allen Wiederholungsversuchen nicht zugestellt werden können, konfigurieren Sie Ihr Abonnement so, dass unzustellbare Nachrichten in eine Warteschlange für unzustellbare Nachrichten (DLQ) verschoben werden. Weitere Informationen finden Sie unter Amazon SNS-Warteschlangen mit unzustellbaren Briefen.
Amazon SNS betrachtet alle 5XX-Fehler und 429 Fehler (zu viele gesendete Anfragen) als wiederholbar. Diese Fehler unterliegen den Lieferrichtlinien. Alle anderen Fehler werden als permanente Fehler betrachtet und es werden keine Wiederholungsversuche unternommen. Nachrichten, die Amazon SNS aufgrund dieser maxReceivesPerSecond Einstellung selbst drosselt, unterliegen jedoch nicht der Richtlinie zur erneuten Zustellung. Self-throttled Nachrichten werden erneut in die Warteschlange gestellt und weiterhin zugestellt, sofern die Kapazität dies zulässt, ohne dass Wiederholungsversuche erforderlich sind.
Anmerkung
Diese Zustellungsrichtlinie verwendet die maxReceivesPerSecond Eigenschaft, um den Zustellungsverkehr auf durchschnittlich 10 Nachrichten pro Sekunde pro Abonnement zu drosseln. Dieser Mechanismus verhindert zwar, dass Ihr HTTP/S Endpunkt durch hohen Traffic überlastet wird, ist jedoch darauf ausgelegt, eine durchschnittliche Zustellungsrate aufrechtzuerhalten und keine strikte Obergrenze durchzusetzen. Gelegentlich kann es zu Spitzen beim Zustellungsverkehr kommen, die das angegebene Limit überschreiten, vor allem, wenn Ihre Veröffentlichungsrate deutlich über der Drosselungsgrenze liegt.
Wenn der (eingehende) Veröffentlichungsverkehr die Zustellungsrate (ausgehend) überschreitet, kann dies zu einem Nachrichtenstau und einer höheren Übermittlungslatenz führen. Um solche Probleme zu vermeiden, stellen Sie sicher, dass der maxReceivesPerSecond Wert den Kapazitäts- und HTTP/S Arbeitslastanforderungen Ihres Servers entspricht.
Das folgende Beispiel für eine Übermittlungsrichtlinie überschreibt den Standard-Inhaltstyp, an den HTTP/S Benachrichtigungen gesendet werden. 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 Übermittlungsrichtlinie besteht aus einer Wiederholungsrichtlinie, einer Drosselungsrichtlinie und einer Anforderungsrichtlinie. Insgesamt gibt es 9 Attribute in einer Übermittlungsrichtlinie.
| Richtlinie | Description | Einschränkung |
|---|---|---|
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:
Standard: linear |
maxReceivesPerSecond
|
Die maximale durchschnittliche Anzahl von Nachrichtenzustellungen pro Sekunde pro Abonnement. | 1 oder höher Standard: Keine Drosselung (keine Begrenzung der Zustellungsrate) |
headerContentType
|
Der Inhaltstyp der Benachrichtigung, die an Endpunkte gesendet HTTP/S wird. |
Wenn die Anforderungsrichtlinie nicht definiert ist, wird der Inhaltstyp standardmäßig auf Wenn die Bereitstellung von Rohnachrichten für ein Abonnement deaktiviert ist (Standard) oder wenn die Bereitstellungsrichtlinie auf Themenebene definiert ist, werden die Header-Inhaltstypen Wenn die Bereitstellung von Rohnachrichten für ein Abonnement aktiviert ist, werden die folgenden Inhaltstypen unterstützt:
|
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 Wiederholungen während der Backoff-Phase mithilfe von drei Parametern steuern:
-
minDelayTarget— Legt die Verzögerung für den ersten Wiederholungsversuch in der Backoff-Phase fest. -
maxDelayTarget— Legt die Verzögerung für den letzten Wiederholungsversuch in der Backoff-Phase fest. -
backoffFunction— Legt den Algorithmus fest, den Amazon SNS verwendet, um die Verzögerungen für alle Wiederholungsversuche zwischen dem ersten und dem letzten Wiederholungsversuch zu berechnen. Sie können aus vier verfügbaren Retry-Backoff-Funktionen wählen.
Das folgende Diagramm veranschaulicht, wie sich verschiedene Wiederholungs-Backoff-Funktionen auf die Verzögerungen zwischen Wiederholungsversuchen während der Backoff-Phase auswirken. Die für dieses Beispiel verwendete Übermittlungsrichtlinie umfasst die folgenden Einstellungen: Insgesamt 10 Wiederholungen, eine Mindestverzögerung von 5 Sekunden und eine maximale Verzögerung von 260 Sekunden.
-
Die vertikale Achse zeigt die Verzögerung (in Sekunden) für jeden Wiederholungsversuch.
-
Die horizontale Achse stellt die Wiederholungssequenz dar, die vom ersten bis zum zehnten Versuch reicht.