web-dev-qa-db-de.com

SNS zu Lambda vs SNS zu SQS zu Lambda

Ich versuche zu verstehen, ob ich SQS in meinem Workflow brauche, wenn mir jemand erklären kann. Wenn in meiner App eine Aktion ausgeführt wird, werden Informationen an das SNS-Thema übermittelt, das LAMBDA aufruft, um eine Verarbeitung durchzuführen. Das funktioniert so gut wie es ist.

Wenn ich online recherchiere, scheinen die Leute SQS auch in diesem Stack zu verwenden, wo SNS Informationen zu SQS ablegt und SQS dann LAMBDA aufrufen würde. 

Ich denke, was ich versuche zu verstehen, ist die Notwendigkeit von SQS. Welchen Wert addiert das, oder anders ausgedrückt, was verliere ich, wenn ich mein LAMBDA direkt von SNS aus aufrufe?

13
Saumil Shah

Der einzige Vorteil einer SQS zwischen SNS und Lambda ist die Wiederaufbereitung. Angenommen, die Lambda kann bestimmte Ereignisse aus bestimmten Gründen (z. B. Timeout oder mangelnder Speicherbedarf) nicht verarbeiten, können Sie das Timeout (auf maximal 5 Minuten) erhöhen ) oder Speicher (bis max. 1,5 GB) und starten Sie die Abfrage erneut, und Sie können die älteren Ereignisse erneut verarbeiten.

Dies wäre im Fall von SNS zu Lambda nicht möglich, wobei bei einem Ausfall von Lambda das Ereignis verloren geht. Und selbst wenn Sie DLQ konfigurieren, müssen Sie noch Vorkehrungen treffen, um das separat zu lesen und die Nachricht zu verarbeiten

Wenn Ihre Ereignisse also kritisch sind und Sie sie nicht verpassen möchten, sollten Sie sich für SNS - SQS - Lambda entscheiden

Allerdings kann SQS kein Lambda wie SNS auslösen. Sie müssen die SQS regelmäßig abfragen

BEARBEITEN:

AWS kündigte an, dass SQS am 28. Juni 2018 die Lambda-Unterstützung auslöste. Es ist also nicht mehr nötig, die Warteschlange in regelmäßigen Abständen abzufragen. Neue Elemente in SQS können Lambda auslösen

18

SQS ruft Lambda nicht auf. SQS kann nichts aufrufen. Benutzer, die Lambda mit SQS verwenden, führen Lambda mit einem Ereigniszeitgeber aus (wie einmal pro Minute). Bei jeder Ausführung der Funktion werden SQS-Abfragen abgefragt, um festzustellen, ob eine Nachricht verarbeitet werden muss.

Wenn Sie nicht in der Warteschlange stehen und nicht zu viele Lambda-Funktionen gleichzeitig ausführen müssen, benötigen Sie kein Warteschlangensystem wie SQS.

3
Mark B
2
alexs

Zu @Arafat Nalkhandes Antwort kommen noch einige Vorteile des Lambda von SQS

  1. In SQS können wir ein delay setzen, damit die Nachricht nach einiger Zeit verarbeitet wird. Dies kann in Situationen hilfreich sein, in denen Daten Zeit benötigen, um verfügbar zu sein.

  2. SQS kann als Notfallspeicher dienen. Angenommen, Downstream-Dienste sind nicht verfügbar. Die Nachricht kann 15 Tage in sqs aufbewahrt werden.

1
best wishes