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.
Timeout SQS für Amazon-Sichtbarkeit
Wenn ein Verbraucher eine Nachricht aus einer SQS Amazon-Warteschlange erhält, verbleibt die Nachricht in der Warteschlange, wird aber vorübergehend für andere Verbraucher unsichtbar. Diese vorübergehende Unsichtbarkeit wird durch das Sichtbarkeits-Timeout gesteuert, ein Mechanismus, der verhindert, dass andere Verbraucher dieselbe Nachricht verarbeiten, während sie bearbeitet wird. Amazon SQS löscht die Nachricht nicht automatisch. Stattdessen muss der Verbraucher die Nachricht mithilfe der DeleteMessage
Aktion explizit löschen, nachdem sie erfolgreich verarbeitet wurde.
Themen
Einrichten der Zeitbeschränkung für die Sichtbarkeit
Das Sichtbarkeits-Timeout bei Amazon SQS beginnt, sobald eine Nachricht an einen Verbraucher zurückgesendet wird. Während dieser Zeit wird erwartet, dass der Verbraucher die Nachricht verarbeitet und löscht. Wenn der Verbraucher die Nachricht jedoch nicht löscht, bevor das Sichtbarkeits-Timeout abgelaufen ist, wird die Nachricht wieder in der Warteschlange sichtbar und kann von einem anderen Verbraucher abgerufen werden.
Jede SQS Amazon-Warteschlange hat ein standardmäßiges Sichtbarkeits-Timeout von 30 Sekunden. Sie können diese Einstellung jedoch an die Anforderungen Ihrer Anwendung anpassen. In der Regel ist es am besten, das Sichtbarkeits-Timeout so einzustellen, dass es der maximalen Zeit entspricht, die Ihre Anwendung zum Verarbeiten und Löschen einer Nachricht benötigt. Sie können auch ein bestimmtes Sichtbarkeits-Timeout für einzelne Nachrichten konfigurieren, ohne die allgemeine Timeout-Einstellung der Warteschlange zu ändern.
Nachrichten und Kontingente im Flug
Bei Amazon SQS handelt es sich bei Bordnachrichten um Nachrichten, die von einem Verbraucher aus einer Warteschlange empfangen, aber noch nicht gelöscht wurden. Bei Standardwarteschlangen gibt es eine Obergrenze für die Anzahl der Nachrichten während der Übertragung, die je nach Warteschleifenverkehr und Nachrichtenrückstand bei maximal etwa 120.000 liegen kann.
-
Kurzabfrage — Wenn dieses Limit bei Verwendung von Kurzabfragen erreicht SQS wird, gibt Amazon eine
OverLimit
Fehlermeldung zurück, die darauf hinweist, dass keine weiteren Nachrichten empfangen werden können, bis einige Bordnachrichten gelöscht wurden. -
Langes Polling — Wenn Sie Long Polling verwenden, SQS gibt Amazon keine Fehlermeldung zurück, wenn das Limit für eingehende Nachrichten erreicht ist. Stattdessen werden keine neuen Nachrichten zurückgegeben, bis die Anzahl der Nachrichten während des Fluges unter das Limit fällt.
Gehen Sie wie folgt vor, um Bordnachrichten effektiv zu verwalten und zu verhindern, dass dieses Kontingent erreicht wird:
-
Sofortiges Löschen — Stellen Sie sicher, dass Nachrichten gelöscht werden, sobald sie erfolgreich verarbeitet wurden, um die Anzahl während der Übertragung zu reduzieren.
-
Überwachen mit CloudWatch — Verwenden Sie Amazon CloudWatch , um die Anzahl der Nachrichten während des Fluges zu überwachen und Alarme einzustellen, die Sie benachrichtigen, wenn das Limit erreicht wird.
-
Last verteilen — Erwägen Sie, die Anzahl der Warteschlangen zu erhöhen, wenn Sie eine große Menge an Nachrichten verarbeiten, um die Last zu verteilen und Engpässe zu vermeiden.
-
Eine Erhöhung des Kontingents beantragen — Falls erforderlich, senden Sie eine Support-Anfrage an AWS um das Kontingent für eingehende Nachrichten für Ihre Anwendung zu erhöhen.
Grundlegendes zum Sichtbarkeits-Timeout in Standard- und Warteschlangen FIFO
Das Sichtbarkeits-Timeout in Amazon SQS verwaltet die Nachrichtenverarbeitung sowohl in Standard- als auch in FIFO Warteschlangen, um doppelte Verarbeitung zu verhindern und die Nachrichtenreihenfolge aufrechtzuerhalten.
-
Standardwarteschlangen — In Standardwarteschlangen verhindert das Sichtbarkeits-Timeout, dass mehrere Verbraucher dieselbe Nachricht gleichzeitig verarbeiten. Aufgrund des Modells der mindestens einmaligen Zustellung von Amazon gibt es jedoch keine absolute Garantie dafürSQS, dass eine Nachricht während des Sichtbarkeitszeitraums nicht mehr als einmal zugestellt wird.
-
FIFOWarteschlangen — In Warteschlangen FIFO (First-In-First-Out) sorgt das Sichtbarkeits-Timeout dafür, dass Nachrichten mit derselben Nachrichtengruppen-ID in der richtigen Reihenfolge verarbeitet werden. Wenn ein Verbraucher eine Nachricht nicht löscht, bevor das Sichtbarkeits-Timeout abgelaufen ist, werden keine neuen Nachrichten mit derselben Gruppen-ID zugestellt, bis die Nachricht wieder sichtbar wird oder gelöscht wird. Bei FIFO Warteschlangen ist es besonders wichtig, das Sichtbarkeits-Timeout sorgfältig zu verwalten, um die Reihenfolge der Nachrichten und die Integrität der Verarbeitung zu wahren.
Was passiert, wenn ein Verbraucher eine Nachricht nicht verarbeitet
Wenn ein Verbraucher eine Nachricht aufgrund von Problemen wie Anwendungsfehlern, Abstürzen oder Verbindungsproblemen nicht verarbeitet und die Nachricht nicht löscht, bevor das Sichtbarkeits-Timeout abgelaufen ist, wird die Nachricht automatisch wieder in der Warteschlange sichtbar. Sobald die Nachricht sichtbar ist, kann sie von demselben oder einem anderen Verbraucher für einen weiteren Verarbeitungsversuch abgerufen werden. Dieser Prozess stellt sicher, dass Nachrichten auch dann nicht verloren gehen, wenn die erste Verarbeitung fehlschlägt.
Es ist jedoch wichtig zu beachten, dass ein zu hohes Sichtbarkeits-Timeout das Wiedererscheinen unverarbeiteter Nachrichten verzögert, was wiederum zu einer Verlangsamung der Wiederholungsversuche führen kann. Die Festlegung eines angemessenen Zeitlimits für die Sichtbarkeit auf der Grundlage der erwarteten Verarbeitungszeit ist für die rechtzeitige Nachrichtenverarbeitung von entscheidender Bedeutung.
Änderung und Beendigung des Sichtbarkeits-Timeouts
Ändern oder beenden Sie das Sichtbarkeits-Timeout in Amazon, SQS indem Sie die ChangeMessageVisibility
Aktion verwenden, um die Nachrichtenverarbeitung nach Ihren Bedürfnissen zu verwalten.
-
Änderung des Timeouts — Wenn das anfängliche Sichtbarkeits-Timeout nicht ausreicht, können Sie es mithilfe der Aktion anpassen.
ChangeMessageVisibility
Mit dieser Aktion können Sie das Timeout je nach Ihren Verarbeitungsanforderungen entweder verkürzen oder verlängern. -
Beenden des Timeouts — Wenn Sie sich entscheiden, eine empfangene Nachricht nicht zu verarbeiten, können Sie deren Sichtbarkeits-Timeout beenden, indem Sie den Wert während der Aktion
VisibilityTimeout
auf 0 Sekunden setzen.ChangeMessageVisibility
Dadurch steht die Nachricht sofort anderen Benutzern zur Verarbeitung zur Verfügung.
Bewährte Methoden
Verwenden Sie die folgenden bewährten Methoden zur Verwaltung von Sichtbarkeits-Timeouts in AmazonSQS, einschließlich der Festlegung, Anpassung und Verlängerung von Timeouts sowie der Behandlung unverarbeiteter Nachrichten mithilfe von Dead-Letter-Warteschlangen (). DLQs
-
Einstellung und Anpassung des Timeouts. Stellen Sie zunächst das Sichtbarkeits-Timeout so ein, dass es der maximalen Zeit entspricht, die Ihre Anwendung normalerweise zum Verarbeiten und Löschen einer Nachricht benötigt. Wenn Sie sich über die genaue Bearbeitungszeit nicht sicher sind, beginnen Sie mit einem kürzeren Timeout (z. B. 2 Minuten) und verlängern Sie es nach Bedarf. Sie können einen Heartbeat-Mechanismus implementieren, um das Sichtbarkeits-Timeout regelmäßig zu verlängern und so sicherzustellen, dass die Nachricht unsichtbar bleibt, bis die Verarbeitung abgeschlossen ist. Dadurch werden Verzögerungen bei der erneuten Verarbeitung unbearbeiteter Nachrichten minimiert und eine vorzeitige Sichtbarkeit verhindert.
-
Verlängerung des Timeouts und Handhabung des 12-Stunden-Limits. Wenn Ihre Verarbeitungszeit variiert oder das ursprünglich festgelegte Timeout überschreiten könnte, verwenden Sie die
ChangeMessageVisibility
Aktion, um das Sichtbarkeits-Timeout zu verlängern, während die Nachricht verarbeitet wird. Beachten Sie, dass das Sichtbarkeits-Timeout eine maximale Grenze von 12 Stunden ab dem ersten Empfang der Nachricht hat. Durch eine Verlängerung des Timeouts wird dieses 12-Stunden-Limit nicht zurückgesetzt. Wenn Ihre Verarbeitung mehr Zeit als dieses Limit benötigt, sollten Sie Folgendes in Betracht ziehen AWS Step Functions oder die Aufgabe in kleinere Schritte aufzuteilen.In der Praxis kann es fehlschlagen, das Sichtbarkeits-Timeout sofort auf das volle 12-Stunden-Limit festzulegen, wenn zwischen dem Empfang der Nachricht und der Aktualisierung des Timeouts eine Verzögerung besteht. Um dies zu vermeiden, verwenden Sie einen etwas niedrigeren Wert, z. B. 43.195 Sekunden.
-
Umgang mit unverarbeiteten Nachrichten Um Nachrichten zu verwalten, bei denen mehrere Verarbeitungsversuche fehlschlagen, konfigurieren Sie eine Warteschlange für unzustellbare Nachrichten (). DLQ Auf diese Weise wird sichergestellt, dass Nachrichten, die nach mehreren Wiederholungen nicht verarbeitet werden können, zur weiteren Analyse oder Bearbeitung getrennt erfasst werden. Dadurch wird verhindert, dass sie wiederholt in der Hauptwarteschlange zirkulieren.