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.
Amazon-SQS-Zeitbeschränkung für die Sichtbarkeit
Wenn Sie eine Nachricht aus einer Amazon SQS-Warteschlange erhalten, bleibt sie in der Warteschlange, wird aber vorübergehend für andere Verbraucher unsichtbar. Diese Unsichtbarkeit wird durch den Sichtbarkeits-Timeout gesteuert, der sicherstellt, dass andere Verbraucher dieselbe Nachricht nicht verarbeiten können, während Sie daran arbeiten. Amazon SQS bietet zwei Optionen zum Löschen von Nachrichten nach der Verarbeitung:
-
Manuelles Löschen — Sie löschen Nachrichten explizit mithilfe der
DeleteMessageAktion. -
Automatisches Löschen — In bestimmten AWS SDKs werden Nachrichten nach erfolgreicher Verarbeitung automatisch gelöscht, was Arbeitsabläufe vereinfacht.
Anwendungsfälle für das Sichtbarkeits-Timeout
Aufgaben mit langer Laufzeit verwalten — Nutzen Sie das Sichtbarkeits-Timeout, um Aufgaben zu bearbeiten, die längere Verarbeitungszeiten erfordern. Legen Sie ein angemessenes Sichtbarkeits-Timeout für Nachrichten fest, für die eine längere Verarbeitungszeit erforderlich ist. Dadurch wird sichergestellt, dass andere Verbraucher dieselbe Nachricht während der Bearbeitung nicht empfangen, wodurch Doppelarbeit vermieden und die Systemeffizienz aufrechterhalten wird.
Implementieren Sie Wiederholungsmechanismen — Verlängern Sie das Zeitlimit für die Sichtbarkeit programmgesteuert für Aufgaben, die nicht innerhalb des ursprünglichen Timeouts abgeschlossen werden können. Wenn eine Aufgabe nicht innerhalb des anfänglichen Sichtbarkeits-Timeouts abgeschlossen wird, können Sie das Timeout programmgesteuert verlängern. Auf diese Weise kann Ihr System erneut versuchen, die Nachricht zu verarbeiten, ohne dass sie für andere Benutzer sichtbar wird, wodurch die Fehlertoleranz und Zuverlässigkeit verbessert werden. Kombinieren Sie es mit Dead-Letter Warteschlangen (DLQs), um anhaltende Ausfälle zu bewältigen.
Koordinieren Sie verteilte Systeme — Verwenden Sie das SQS-Sichtbarkeits-Timeout, um Aufgaben auf verteilten Systemen zu koordinieren. Legen Sie Zeitlimits für die Sichtbarkeit fest, die Ihren erwarteten Verarbeitungszeiten für verschiedene Komponenten entsprechen. Dies trägt zur Aufrechterhaltung der Konsistenz bei und verhindert Rennbedingungen in komplexen, verteilten Architekturen.
Optimieren Sie die Ressourcenauslastung — Passen Sie die Timeouts für die SQS-Sichtbarkeit an, um die Ressourcenauslastung in Ihrer Anwendung zu optimieren. Durch das Festlegen geeigneter Timeouts können Sie sicherstellen, dass Nachrichten effizient verarbeitet werden, ohne dass Ressourcen unnötig beansprucht werden. Dies führt zu einer besseren Gesamtsystemleistung und Wirtschaftlichkeit.
Einstellung und Anpassung des Timeouts für die Sichtbarkeit
Das Sichtbarkeits-Timeout beginnt, sobald Ihnen eine Nachricht zugestellt wird. Während dieses Zeitraums wird von Ihnen erwartet, dass Sie die Nachricht verarbeiten und löschen. Wenn Sie die Nachricht nicht vor Ablauf des Timeouts löschen, wird die Nachricht wieder in der Warteschlange sichtbar und kann von einem anderen Verbraucher abgerufen werden. Das standardmäßige Sichtbarkeits-Timeout für eine Warteschlange beträgt 30 Sekunden. Sie können dies jedoch an die Zeit anpassen, die Ihre Anwendung benötigt, um eine Nachricht zu verarbeiten und zu löschen. Sie können auch ein bestimmtes Sichtbarkeits-Timeout für einzelne Nachrichten festlegen, ohne die Gesamteinstellung der Warteschlange zu ändern. Verwenden Sie die ChangeMessageVisibility Aktion, um den Timeout nach Bedarf programmgesteuert zu verlängern oder zu verkürzen.
In Flugnachrichten und Kontingenten
In Amazon SQS handelt es sich bei Nachrichten während des Fluges um Nachrichten, die von einem Verbraucher empfangen, aber noch nicht gelöscht wurden. Für Standardwarteschlangen gibt es ein Limit von etwa 120.000 Nachrichten während des Fluges, abhängig vom Verkehr in der Warteschlange und dem Nachrichtenrückstand. Wenn Sie dieses Limit erreichen, gibt Amazon SQS einen OverLimit Fehler zurück, der darauf hinweist, dass keine weiteren Nachrichten empfangen werden können, bis einige Nachrichten während des Fluges gelöscht wurden. Bei FIFO-Warteschlangen hängen die Grenzwerte von den aktiven Nachrichtengruppen ab.
-
Bei Verwendung von Kurzabfragen — Wenn dieses Limit bei der Verwendung von Kurzabfragen erreicht wird, gibt Amazon SQS einen
OverLimitFehler zurück, der darauf hinweist, dass keine weiteren Nachrichten empfangen werden können, bis einige Nachrichten während des Fluges gelöscht wurden. -
Wenn Sie lange Abfragen verwenden — Wenn Sie lange Abfragen verwenden, gibt Amazon SQS keinen Fehler zurück, wenn das Nachrichtenlimit während des Fluges erreicht ist. Stattdessen werden keine neuen Nachrichten zurückgegeben, bis die Anzahl der Nachrichten während des Fluges unter das Limit fällt.
So verwalten Sie Nachrichten während des Fluges effektiv:
-
Sofortiges Löschen — Löschen Sie Nachrichten (manuell oder automatisch) nach der Verarbeitung, um die Anzahl der Nachrichten während des Fluges zu reduzieren.
-
Überwachung mit CloudWatch — Stellen Sie Alarme für hohe Anzahl während des Fluges ein, um zu verhindern, dass das Limit erreicht wird.
-
Last verteilen — Wenn Sie ein hohes Nachrichtenvolumen verarbeiten, verwenden Sie zusätzliche Warteschlangen oder Verbraucher, um die Auslastung auszugleichen und Engpässe zu vermeiden.
-
Kontingenterhöhung anfordern — Senden Sie eine Anfrage an den AWS Support, wenn höhere Grenzwerte erforderlich sind.
Grundlegendes zum Timeout bei der Sichtbarkeit in Standard- und FIFO-Warteschlangen
Sowohl in Standard- als auch in FIFO (First-In-First-Out) -Warteschlangen verhindert das Sichtbarkeits-Timeout, dass mehrere Verbraucher dieselbe Nachricht gleichzeitig verarbeiten. Aufgrund des mindestens einmal zustellenden Modells von Amazon SQS gibt es jedoch keine absolute Garantie dafür, dass eine Nachricht während des Zeitlimits für die Sichtbarkeit nicht mehrmals zugestellt wird.
-
Standardwarteschlangen — Das Sichtbarkeits-Timeout in Standardwarteschlangen verhindert, dass mehrere Verbraucher dieselbe Nachricht gleichzeitig verarbeiten. Aufgrund des Modells, bei dem die Zustellung mindestens einmal erfolgt, garantiert Amazon SQS jedoch nicht, dass eine Nachricht innerhalb des Zeitlimits für die Sichtbarkeit nicht mehrmals zugestellt wird.
-
FIFO-Warteschlangen — Bei FIFO-Warteschlangen werden Nachrichten mit derselben Nachrichtengruppen-ID in einer strikten Reihenfolge verarbeitet. Wenn sich eine Nachricht mit einer Nachrichtengruppen-ID im Versand befindet, werden nachfolgende Nachrichten in dieser Gruppe erst verfügbar gemacht, wenn die Nachricht während des Fluges gelöscht wird oder das Sichtbarkeits-Timeout abgelaufen ist. Dadurch wird die Gruppe jedoch nicht auf unbestimmte Zeit „gesperrt“ — jede Nachricht wird der Reihe nach verarbeitet, und erst wenn jede Nachricht gelöscht wird oder wieder sichtbar wird, ist die nächste Nachricht in dieser Gruppe für Verbraucher verfügbar. Dieser Ansatz gewährleistet eine geordnete Verarbeitung innerhalb der Gruppe, ohne die Gruppe unnötig daran zu hindern, Nachrichten zuzustellen.
Umgang mit Fehlern
Wenn Sie eine Nachricht aufgrund von Anwendungsfehlern, Abstürzen oder Verbindungsproblemen nicht vor Ablauf des Sichtbarkeits-Timeouts verarbeiten und löschen, wird die Nachricht wieder in der Warteschlange sichtbar. Sie kann dann von demselben oder einem anderen Benutzer für einen weiteren Verarbeitungsversuch abgerufen werden. Dadurch wird sichergestellt, dass Nachrichten auch dann nicht verloren gehen, wenn die anfängliche Verarbeitung fehlschlägt. Wenn Sie den Sichtbarkeits-Timeout jedoch zu hoch einstellen, kann dies das Wiedererscheinen unverarbeiteter Nachrichten verzögern und so möglicherweise die Anzahl der Wiederholungsversuche verzögern. Es ist wichtig, ein angemessenes Zeitlimit für die Sichtbarkeit festzulegen, das auf der erwarteten Verarbeitungszeit basiert, um eine zeitnahe Nachrichtenverarbeitung zu gewährleisten.
Timeout für die Sichtbarkeit ändern und beenden
Sie können das Sichtbarkeits-Timeout mit der folgenden ChangeMessageVisibility Aktion ändern oder beenden:
-
Timeout ändern — Passen Sie das Sichtbarkeits-Timeout dynamisch an mit.
ChangeMessageVisibilityAuf diese Weise können Sie die Timeout-Dauer verlängern oder reduzieren, um den Verarbeitungsanforderungen gerecht zu werden. -
Beenden des Timeouts — Wenn Sie beschließen, eine empfangene Nachricht nicht zu verarbeiten, beenden Sie das Zeitlimit für die Sichtbarkeit, indem Sie den Wert während der Aktion
VisibilityTimeoutauf 0 Sekunden setzen.ChangeMessageVisibilityDadurch steht die Nachricht sofort anderen Verbrauchern zur Bearbeitung zur Verfügung.
Bewährte Methoden
Verwenden Sie die folgenden bewährten Methoden für die Verwaltung von Sichtbarkeits-Timeouts in Amazon SQS, einschließlich der Festlegung, Anpassung und Verlängerung von Timeouts sowie der Behandlung unverarbeiteter Nachrichten mithilfe Dead-Letter von 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 benötigt, um eine Nachricht zu verarbeiten und zu löschen. Wenn Sie sich bezüglich der genauen Verarbeitungszeit nicht sicher sind, beginnen Sie mit einem kürzeren Timeout (z. B. 2 Minuten) und verlängern Sie es nach Bedarf. Implementieren Sie einen Heartbeat-Mechanismus, um den Timeout für die Sichtbarkeit regelmäßig zu verlängern. So stellen Sie sicher, 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 Einhaltung des 12-Stunden-Limits. Wenn Ihre Verarbeitungszeit das ursprünglich festgelegte Timeout variiert oder möglicherweise überschreitet, verwenden Sie die
ChangeMessageVisibilityAktion, um das Sichtbarkeits-Timeout während der Verarbeitung der Nachricht zu verlängern. Beachten Sie, dass das Sichtbarkeits-Timeout eine Höchstgrenze von 12 Stunden ab dem ersten Empfang der Nachricht hat. Durch die Verlängerung des Timeouts wird dieses 12-Stunden-Limit nicht zurückgesetzt. Wenn Ihre Verarbeitung mehr Zeit als dieses Limit benötigt, sollten Sie erwägen, die Aufgabe zu verwenden AWS Step Functions oder in kleinere Schritte zu unterteilen. -
Umgang mit unverarbeiteten Nachrichten. Um Nachrichten zu verwalten, bei denen mehrere Verarbeitungsversuche fehlschlagen, konfigurieren Sie eine Dead-Letter Warteschlange (DLQ). Dadurch wird sichergestellt, dass Nachrichten, die nach mehreren Wiederholungsversuchen nicht verarbeitet werden können, zur weiteren Analyse oder Bearbeitung getrennt erfasst werden, sodass sie nicht wiederholt in der Hauptwarteschlange zirkulieren.