SQS лямбда-интеграция - что происходит, когда выбрасывается исключение - PullRequest
0 голосов
/ 25 декабря 2018

В документе говорится, что

Лямбда-функция может не работать по любой из следующих причин:

Время ожидания функции истекло при попытке достичь конечной точки.

Функция не может успешно проанализировать входные данные.

Функция испытывает ограничения ресурсов, такие как ошибки нехватки памяти или другие таймауты.

ДляВ моем случае я использую C # Lambda с интеграцией SQS

Если вызов завершится неудачно или истечет время ожидания, каждое сообщение в пакете будет возвращено в очередь, и каждое из них будет доступно для обработки, как толькоВремя ожидания видимости истекает

Мой вопрос: что произойдет, если я использую лямбда-интеграцию SQS (.NET)

  • Моя функция вызывает исключение
  • Мой таймер видимости SQS установлен на 15 минут, макс. Счетчик приема равен 1 , настройка DLQ

Будет ли функция повторена?Будет ли он помещен в DLQ, когда после всех повторных попыток будут выданы исключения?

1 Ответ

0 голосов
/ 25 декабря 2018

В тот момент, когда ваш код выдает необработанное / необработанное исключение, Lambda перестает работать.Если для максимального числа полученных сообщений установлено значение 1, сообщение будет отправлено в DLQ после первого сбоя, оно не будет повторено.Например, если максимальный счетчик приема равен 5, то в момент сбоя функции Lambda сообщение будет возвращено в очередь после истечения времени ожидания видимости.

Причина такого поведения заключается в том, что вы даете Lambdaразрешения опроса очереди от вашего имени.Если он получает сообщение, он вызывает функцию и дает вам единственную возможность обработать это сообщение.Если вам не удается, сообщение возвращается в очередь, и Lambda продолжает опрашивать очередь от вашего имени, не имеет значения, будет ли следующее сообщение таким же, как сообщение с ошибкой или новое сообщение.

Вот отличныйблог пост , который помог мне понять, как работают эти триггеры.

...