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.
Bewährte Methoden für die Implementierung von partiellen Batch-Antworten
Dieser Abschnitt enthält bewährte Methoden für die Konfiguration von partiellen Batch-Antworten für Amazon SQS SQS-Ereignisquellen.
-
Konfigurieren Sie eine Warteschlange für unzustellbare Nachrichten, um ein Schneeball-Anti-Muster in der Architektur Ihrer Serverless-Anwendung zu vermeiden. Weitere Informationen finden Sie im Abschnitt Vermeidung von Schneeball-Anti-Mustern.
-
Konfigurieren Sie die Ereignisquellenzuordnung Ihrer Lambda-Funktion so, dass nur fehlgeschlagene Nachrichten sichtbar sind. Fügen Sie dies der FunctionResponseTypesListe ReportBatchItemFailuresbei der Konfiguration der Ereignisquellenzuordnung hinzu. Ihre Lambda-Funktion sollte, wenn sie von SQS aufgerufen wird, teilweise Batch-Antworten implementieren. Erwägen Sie die Verwendung des Dienstprogramms Powertools for AWS Lambda Batch Processing, das SQS-Nachrichten mit integrierter Unterstützung für partielle Batches verarbeitet.
Batch-Verarbeitung
-
Implementieren Sie partielle Batch-Antworten in Ihrer Lambda-Funktion, die von SQS aufgerufen wird. Erwägen Sie die Verwendung des Dienstprogramms Powertools for AWS Lambda Batch Processing. Dieses Hilfsprogramm verarbeitet SQS-Nachrichten mit integrierter Unterstützung für partielle Batch-Antworten. Weitere Informationen finden Sie unter Melden von Batch-Elementfehlern für Lambda-Funktionen mit einem Amazon SQS-Trigger im AWS Lambda Entwicklerhandbuch.
Powertools für die AWS Lambda Stapelverarbeitung
Idempotenz
-
Definieren Sie die Anzahl, wie oft eine Nachricht an die Quell-Warteschlange zugestellt wird, bevor sie in die Warteschlange für unzustellbare Nachrichten verschoben wird. Stellen Sie sicher, dass der von Ihnen definierte Wert dem Anwendungsfall Ihrer Anwendung entspricht, indem Sie die wahrscheinlichsten Fehlerursachen und deren geschätzte Wiederherstellungszeit ermitteln. Um die Anzahl der Wiederholungen zu definieren, konfigurieren Sie den maxReceiveCountWert in der Quell-Warteschlange. RedrivePolicy Weitere Informationen finden Sie SetQueueAttributesin der Amazon SQS API-Referenz. Weitere Informationen finden Sie unter Einführung in Amazon Simple Queue Service zur Neuübertragung von Warteschlangen mit unzustellbaren Briefen in Quellwarteschlangen
. -
Stellen Sie sicher, dass Ihr Lambda-Code idempotent ist und Nachrichten mehrfach verarbeiten kann. Um Idempotenz zu implementieren, sollten Sie in Erwägung ziehen, das Powertools for AWS Lambda Idempotency Utility zu verwenden, das den Code einer Funktion so vorbereitet, dass er einzelne Jobs innerhalb eines Amazon SQS SQS-Batches unterstützt. Beginnen Sie mit der Integration ReportBatchItemFailuresin Ihre Ereignisquellenzuordnung. Weitere Informationen finden Sie unter Implementieren von partiellen Batch-Antworten im AWS Lambda Entwicklerhandbuch und Wie kann ich verhindern, dass eine Amazon SQS SQS-Nachricht meine Lambda-Funktion mehr als einmal aufruft?
Das Programm Powertools for Idempotency AWS Lambda
Metriken
Das Hilfsprogramm Powertools for Metrics AWS Lambda
-
Wenn Sie eine First-In-First-Out (FIFO-) Warteschlange verwenden, sollte Ihre Funktion die Verarbeitung von Nachrichten nach dem ersten Fehler beenden und alle fehlgeschlagenen und unverarbeiteten Nachrichten zurückgeben. batchItemFailures Dies hilft dabei, die Reihenfolge der Nachrichten in Ihrer Warteschlange beizubehalten.
Anmerkung
Um die Gesamtleistung einer Anwendung zu verfolgen, die teilweise Batch-Verarbeitung verwendet, ist eine Leistungsüberwachung auf Codeebene erforderlich. Nach der Konfiguration der Batchverarbeitung sind Lambda-Funktionsaufrufe in der Regel unabhängig vom Verarbeitungsergebnis erfolgreich.
Vermeidung von Schneeball-Anti-Mustern
Lambda und Amazon SQS können die Nachrichten nicht kontrollieren, die Upstream-Microservices in eine SQS-Warteschlange schreiben. Wenn es Nachrichten gibt, die nicht verarbeitet werden können, gibt Lambda diese unverarbeiteten Nachrichten an die SQS-Quellwarteschlange zurück, sofern keine separate Warteschlange für unzustellbare Briefe konfiguriert ist. Unverarbeitete Nachrichten werden dann von der Lambda-Funktion erneut versucht. Wenn keine Warteschlange für unzustellbare Briefe existiert, übersteigt die Anzahl der unverarbeiteten Nachrichten, die in die Amazon SQS SQS-Warteschlange zurückgeschickt wurden, irgendwann die Anzahl der gültigen Nachrichten der Warteschlange.
Diese Art von Schneeball-Anti-Pattern, bei der jeder nachfolgende Lambda-Aufruf das Problem verschlimmert, kann die folgenden Probleme verursachen:
-
Schlechte Benutzererfahrung, da die Verarbeitung der Jobs länger als gewöhnlich dauert oder gar nicht verarbeitet wird
-
Höhere Kosten proportional zur exponentiell steigenden Anzahl von Nachrichten in der Amazon-SQS-Warteschlange und Nachrichtenwiederholungen
-
Reduzierte Lambda-Rechenkapazität für die Anwendung oder AWS-Konto wenn die Funktion keine Begrenzung ihrer Aufrufanforderungen hat
Um zu vermeiden, dass bei der Konfiguration partieller Batch-Antworten ein Schneeball-Anti-Pattern entsteht, empfiehlt es sich, auch eine Warteschlange mit unerlaubten Buchstaben zu erstellen. Diese separate Warteschlange kann Nachrichten speichern, die nicht erfolgreich verarbeitet wurden, und hilft Ihnen, den Lebenszyklus der unverarbeiteten Nachrichten Ihrer Anwendung besser zu verwalten.
Weitere Informationen finden Sie im Amazon SQS Developer Guide unter Konfigurieren einer Warteschlange für unzustellbare Briefe mithilfe der Amazon SQS SQS-Konsole.