Является ли обработка ошибок для асинхронных лямбда-вызовов с использованием очереди хорошим способом? - PullRequest
0 голосов
/ 29 марта 2019

У меня есть лямбда-функция, которая обрабатывает критическую функцию, которая работает с нашей базой данных.Мне нужно убедиться, что это выполняется по крайней мере один раз, и если это не удается после трех раз отправить электронное письмо.В настоящее время я использую очередь для запуска лямбды, и если лямбда трижды выходит из строя, сообщение будет отправлено в очередь недоставленных сообщений, которая будет обрабатывать отправку электронных писем.

Но когда я читаю Документ AWS для лямбды, он говоритЛямбда уже повторить три раза.Если это так, без использования очереди, я могу просто отправить электронное письмо из той же функции Lambda без использования очередей.Это 100% отказоустойчивый способ обработки ошибок в лямбда-функции?Если не использует очереди это правильный путь?

1 Ответ

2 голосов
/ 29 марта 2019

Является ли это 100% отказоустойчивым способом обработки ошибок в лямбда-функции?

Нет.

Если нет, использование очередей является правильнымспособ?

Да, если настроен правильно.

Поведение лямбда-повтора говорит, что повторяется еще два раза, если вызов асинхронный.SQS - это система, основанная на опросах.Lambda опрашивает очередь, и все ее вызовы будут синхронными .

Для сервисов AWS на основе опроса (Amazon Kinesis, Amazon DynamoDB, Amazon SimpleСлужба очереди), AWS Lambda опрашивает поток или очередь сообщений и синхронно вызывает вашу функцию Lambda.

Если вы хотите подождать, пока ваши сообщения не пройдут три раза, установите для атрибута maxReceiveCount значение 3 на вашемисходная очередь SQS.Хотя в документации явно не упоминается maxReceiveCount для очередей SQS, настроенных в качестве источника событий, это также применимо.Как только пороговое значение будет достигать maxReceiveCount, сообщение будет перенаправлено на настроенный DLQ.Помните, что вам нужно настроить DLQ в вашей очереди Source SQS, а не в самой функции Lambda.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...