2016-03-23 1 views
0

Ich habe 1 Publisher und 1 Abonnent für mein SNS-Thema in AWS. Angenommen, mein Abonnent wird fehlgeschlagen und wird mit einem Fehler beendet.Was passiert, wenn mein Lambda-Job, der für AWS SNS-Themen abonniert ist, nicht mehr funktioniert oder nicht mehr funktioniert?

Wird SNS diese fehlgeschlagenen Nachrichten weiterleiten? Wenn nicht ..

Gibt es einen anderen Weg, um dieses Ziel zu erreichen, wo mein System der Verarbeitung von der letzten erfolgreichen Lambda-Ausführung beginnt?

Antwort

1

Es gibt eine Wiederholungsrichtlinie, aber wenn Ihre Anwendung die Nachricht bereits erhalten hat, wird keine Nachricht gesendet. Wenn etwas schief geht, wirst du es nicht wieder sehen, und da Lambdas keinen Zustand haben ... Du könntest in Schwierigkeiten sein.

Ich könnte betrachten, SQS anstelle von SNS zu betrachten. Denken Sie daran, dass Nachrichten in SQS erst entfernt werden, wenn Sie sie entfernen, und Sie können ein Fenster der Unsichtbarkeit einrichten. Daher können Sie ganz einfach sicherstellen, dass die nächste Lambda-Ausführung dort aufhört, wo Dinge aufgehört haben (abhängig von Ihren Einstellungen). Jedes Lambda wäre dann dafür verantwortlich, diese Nachricht von SQS zu entfernen und auf diese Weise würde man wissen, dass die Nachricht verarbeitet wurde.

Ohne mehr über Ihre Anwendung und Bedürfnisse zu wissen, könnte ich nicht sicher sagen ... Aber ich würde es mir ansehen. Ich habe einen "Taskmaster" Lambda erstellt, bevor dieser nach einem Zeitplan ausgeführt wurde und aus einer SQS-Warteschlange gelesen wurde (tatsächlich mehrere Warteschlangen - der geplante Job hat ein anderes JSON-Ereignis basierend auf der zu lesenden Warteschlange übergeben). Es würde dann den Job an den entsprechenden Lambda "Arbeiter" übergeben, der dann diese Nachricht entfernen würde. Sollte es aufhören zu arbeiten ... Nun, die Unsichtbarkeitszeit würde Timeout (und 5 Minuten ist nicht schlecht hier gegeben das ist alles Lambdas kann für ausführen) und der nächste Lambda würde es abholen. Der Taskmaster würde dann so oft wie nötig laufen und so viele Jobs wie nötig aus der Warteschlange lesen. Dies hilft Ihnen wirklich, die volle Kontrolle darüber zu haben, mit welcher Geschwindigkeit Sie Dinge verarbeiten, wie oft Sie Dinge wiederholen, etc. Dann können Sie auch eine Warteschlange für nicht zustellbare Nachrichten verwenden, um alles zu finden, was möglicherweise fehlgeschlagen ist Dinge zurück in die Warteschlange stecken).

Sie haben eine Menge Flexibilität mit SQS, dass ich nicht wirklich sicher bin, dass Sie mit SNS um ehrlich zu sein. Ich habe SNS nie gemocht, obwohl es auch einen Ort und eine Zeit hat und so wieder ohne hier mehr zu wissen, könnte ich nicht sagen, ob SQS das Richtige für dich wäre ... Aber ich denke, dass deine Sorgen mit SQS erledigt werden können wenn es für Ihre Anwendung sinnvoll ist.

Verwandte Themen