Timeout SQS für Amazon-Sichtbarkeit - Amazon Simple Queue 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.

Timeout SQS für Amazon-Sichtbarkeit

Wenn Sie eine Nachricht aus einer SQS Amazon-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 DeleteMessageAktion.

  • Automatisches Löschen — In bestimmten AWS SDKs Fällen werden Nachrichten bei erfolgreicher Verarbeitung automatisch gelöscht, wodurch Arbeitsabläufe vereinfacht werden.

Zeitliniendiagramm, das anzeigt, wie Anfragen während des Sichtbarkeits-Timeouts verarbeitet 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 Zeitlimits für die Sichtbarkeit 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 ChangeMessageVisibilityAktion, um das Timeout nach Bedarf programmgesteuert zu verlängern oder zu verkürzen.

In Flugnachrichten und Kontingenten

Bei Amazon sind Bordnachrichten NachrichtenSQS, die von einem Verbraucher empfangen, aber noch nicht gelöscht wurden. Für Standardwarteschlangen gilt ein Limit von etwa 120.000 Bordnachrichten, abhängig vom Warteschlangenverkehr und dem Nachrichtenrückstand. Wenn Sie dieses Limit erreichen, SQS gibt Amazon 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 Limits von den aktiven Nachrichtengruppen ab.

  • Bei Verwendung von Kurzabfragen — Wenn dieses Limit bei der 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.

  • Wenn Sie Long Polling verwenden — Wenn Sie Long Polling verwenden, gibt Amazon SQS 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.

So verwalten Sie Nachrichten während des Fluges effektiv:

  1. Sofortiges Löschen — Löschen Sie Nachrichten (manuell oder automatisch) nach der Verarbeitung, um die Anzahl während des Fluges zu reduzieren.

  2. Überwachen mit CloudWatch — Stellen Sie Alarme für hohe Flugzahlen ein, um zu verhindern, dass das Limit erreicht wird.

  3. 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.

  4. 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 Warteschlangen FIFO

Sowohl in Standard- als auch in Warteschlangen FIFO (First-In-First-Out) verhindert das Sichtbarkeits-Timeout, dass mehrere Benutzer dieselbe Nachricht gleichzeitig verarbeiten. Aufgrund des at-least-once Zustellungsmodells von Amazon gibt es jedoch keine absolute Garantie dafürSQS, 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 Liefermodells garantiert Amazon jedoch SQS nicht, dass eine Nachricht innerhalb des Sichtbarkeitszeitraums nicht mehr als einmal zugestellt wird.

  • FIFOWarteschlangen — 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 AmazonSQS, 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 Warteschlange für unzustellbare Briefe (). 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.