Как обработать ошибку выполнения потребителя в SQS + Lambda? - PullRequest
0 голосов
/ 28 сентября 2018

Я настроил SQS + Lambda и все работает отлично.Я делаю некоторые симуляции и отправляю сообщения, которые создают ошибки.Когда я делаю это, сообщение остается в полете навсегда, а лямбда продолжает выполняться.Как лучше всего не допустить этого?

1 Ответ

0 голосов
/ 28 сентября 2018

Правильно, эта установка работает как положено.Чтобы предотвратить то, что вы описываете, вы должны настроить DLQ SQS и настроить свою основную очередь.Посмотрите на DLQ SQS.

Ссылка: https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-dead-letter-queues.html

Шаги:

  1. Просто создайте новую очередь (например: nameOfYourPrimaryQueueDLQ );
  2. Затем нажмите правой кнопкой мыши на основной SQS и выберите Настроить очередь .
  3. Найти Настройки очереди недоставленных писем , проверить Использовать политику переадресации , поставить Максимальное число полученных и, наконец, установить ARN вашей новой очереди SQS (которую вы недавно создали) до очереди недоставленных сообщений .

Будет работать так:

  1. Вы отправляете сообщение в очередь SQS;
  2. Затем SQS будет запускать вашу функцию Lambda;
  3. Если это не удалось, тогда SQS будет пытаться отправить другое сообщение-событие на вашу лямбду, пока вынажмите максимальное количество полученных и после этого текущее сообщение будет отправлено в SQS DLQ.
...