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.
Wenn Sie eine Nachricht aus einer Amazon SQS SQS-Warteschlange erhalten, verbleibt sie in der Warteschlange, wird aber vorübergehend für andere Verbraucher unsichtbar. Diese Unsichtbarkeit wird durch das Sichtbarkeits-Timeout gesteuert, das 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
DeleteMessage
Aktion. -
Automatisches Löschen — In bestimmten AWS SDKs Fällen werden Nachrichten bei erfolgreicher Verarbeitung automatisch gelöscht, wodurch Arbeitsabläufe vereinfacht werden.

Anwendungsfälle mit Timeout bei der Sichtbarkeit
Lang andauernde Aufgaben verwalten — Verwenden Sie das Sichtbarkeits-Timeout, um Aufgaben zu bearbeiten, die längere Verarbeitungszeiten erfordern. Legen Sie ein angemessenes Sichtbarkeits-Timeout für Nachrichten fest, die eine längere Verarbeitungszeit erfordern. Dadurch wird sichergestellt, dass andere Benutzer dieselbe Nachricht während der Bearbeitung nicht aufnehmen, wodurch Doppelarbeit vermieden und die Systemeffizienz erhalten bleibt.
Implementieren Sie Wiederholungsmechanismen — Verlängern Sie das Sichtbarkeits-Timeout 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 werden kann, 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, was die Fehlertoleranz und Zuverlässigkeit verbessert. Kombinieren Sie es mit Dead-Letter-Warteschlangen (DLQs), um anhaltende Fehler zu beheben.
Verteilte Systeme koordinieren — Verwenden Sie das SQS-Sichtbarkeits-Timeout, um Aufgaben in 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 Konkurrenzprobleme in komplexen, verteilten Architekturen.
Optimieren Sie die Ressourcennutzung — Passen Sie die SQS-Sichtbarkeits-Timeouts an, um die Ressourcennutzung in Ihrer Anwendung zu optimieren. Durch die Festlegung geeigneter Timeouts können Sie sicherstellen, dass Nachrichten effizient verarbeitet werden, ohne unnötig Ressourcen zu beanspruchen. Dies führt zu einer besseren Gesamtleistung und Kosteneffektivität des Systems.
Einstellung und Anpassung des Sichtbarkeits-Timeouts
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 sie 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 dieses Zeitlimit jedoch an die Zeit anpassen, die Ihre Anwendung zum Verarbeiten und Löschen einer Nachricht benötigt. 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 das Timeout nach Bedarf programmgesteuert zu verlängern oder zu verkürzen.
In Flugnachrichten und Kontingenten
In Amazon SQS sind Bordnachrichten 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 der Übertragung, abhängig vom Warteschlangenverkehr und dem Nachrichtenrückstand. Wenn Sie dieses Limit erreichen, gibt Amazon SQS eine OverLimit
Fehlermeldung zurück, die darauf hinweist, dass keine weiteren Nachrichten empfangen werden können, bis einige Bordnachrichten 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
OverLimit
Fehler zurück, der darauf hinweist, dass keine weiteren Nachrichten empfangen werden können, bis einige Bordnachrichten gelöscht wurden. -
Wenn Sie Long Polling verwenden — Wenn Sie Long Polling verwenden, gibt Amazon SQS keinen Fehler 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 der Übertragung unter das Limit fällt.
Gehen Sie wie folgt vor, um Bordnachrichten effektiv zu verwalten:
-
Sofortiges Löschen — Löschen Sie Nachrichten (manuell oder automatisch) nach der Verarbeitung, um die Anzahl während des Fluges zu reduzieren.
-
Überwachen mit CloudWatch — Stellen Sie Alarme für hohe Flugzahlen ein, um zu verhindern, dass das Limit erreicht wird.
-
Last verteilen — Wenn Sie eine große Menge an Nachrichten verarbeiten, sollten Sie zusätzliche Warteschlangen oder Verbraucher verwenden, um die Auslastung auszugleichen und Engpässe zu vermeiden.
-
Eine Erhöhung des Kontingents beantragen — Senden Sie eine Anfrage an den AWS Support, wenn höhere Limits erforderlich sind.
Grundlegendes zum Sichtbarkeits-Timeout in Standard- und FIFO-Warteschlangen
Sowohl in Standard- als auch in FIFO-Warteschlangen (First-In-First-Out) verhindert das Sichtbarkeits-Timeout, dass mehrere Benutzer dieselbe Nachricht gleichzeitig verarbeiten. Aufgrund des at-least-once Zustellungsmodells von Amazon SQS gibt es jedoch keine absolute Garantie dafür, dass eine Nachricht während des Sichtbarkeits-Timeouts nicht mehr als einmal zugestellt wird.
-
Standardwarteschlangen — Das Sichtbarkeits-Timeout in Standardwarteschlangen verhindert, dass mehrere Verbraucher dieselbe Nachricht gleichzeitig verarbeiten. Aufgrund des at-least-once Zustellungsmodells garantiert Amazon SQS jedoch nicht, dass eine Nachricht innerhalb des Sichtbarkeits-Timeouts nicht mehr als einmal 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 in Bearbeitung befindet, werden nachfolgende Nachrichten in dieser Gruppe erst verfügbar gemacht, wenn die aktuelle Nachricht entweder gelöscht wird oder das Sichtbarkeits-Timeout abgelaufen ist. Dadurch wird die Gruppe jedoch nicht auf unbestimmte Zeit „gesperrt“ — jede Nachricht wird nacheinander verarbeitet, und nur wenn jede Nachricht gelöscht wird oder wieder sichtbar wird, steht die nächste Nachricht in dieser Gruppe den Verbrauchern zur Verfügung. Dieser Ansatz gewährleistet eine geordnete Verarbeitung innerhalb der Gruppe, ohne die Gruppe unnötig an der Zustellung von Nachrichten zu hindern.
Umgang mit Fehlern
Wenn Sie eine Nachricht nicht verarbeiten und löschen, bevor das Sichtbarkeits-Timeout abgelaufen ist — aufgrund von Anwendungsfehlern, Abstürzen oder Verbindungsproblemen —, wird die Nachricht wieder in der Warteschlange sichtbar. Die Nachricht 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 erste Verarbeitung fehlschlägt. Ein zu hohes Sichtbarkeits-Timeout kann jedoch dazu führen, dass unverarbeitete Nachrichten erneut angezeigt werden, was wiederum zu einer Verlangsamung der Wiederholungsversuche führen kann. Es ist wichtig, ein angemessenes Sichtbarkeits-Timeout festzulegen, das auf der erwarteten Verarbeitungszeit basiert, damit Nachrichten rechtzeitig bearbeitet werden können.
Änderung und Beendigung des Sichtbarkeits-Timeouts
Sie können das Sichtbarkeits-Timeout mit der folgenden ChangeMessageVisibility
Aktion ändern oder beenden:
-
Das Timeout ändern — Passen Sie das Sichtbarkeits-Timeout dynamisch an, indem Sie.
ChangeMessageVisibility
Auf diese Weise können Sie die Timeout-Dauern verlängern oder reduzieren, um sie an die Verarbeitungsanforderungen anzupassen. -
Beenden des Timeouts — Wenn Sie sich entscheiden, eine empfangene Nachricht nicht zu verarbeiten, beenden Sie das Sichtbarkeits-Timeout, 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 Amazon SQS, einschließlich der Festlegung, Anpassung und Verlängerung von Timeouts sowie der Behandlung unbearbeiteter 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. Implementieren Sie einen Heartbeat-Mechanismus, 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 während der Verarbeitung der Nachricht zu verlängern. Beachten Sie, dass das Sichtbarkeits-Timeout eine maximale Grenze von 12 Stunden ab dem Zeitpunkt hat, an dem die Nachricht zum ersten Mal empfangen wurde. Durch eine Verlängerung des Timeouts wird dieses 12-Stunden-Limit nicht zurückgesetzt. Wenn Ihre Bearbeitung mehr Zeit als dieses Limit in Anspruch nimmt, 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). 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.