AWS - Лямбда и SQS поведение - PullRequest
0 голосов
/ 07 февраля 2019

Я настроил SQS, DeadLetterQue (DLQ) и лямбду.У меня есть несколько вопросов относительно формата тела, который получает SQS.После некоторых попыток я вижу, что некоторые сообщения заканчиваются в DLQ.

Я прочитал много документации, но на самом деле я все еще не могу понять некоторые основные вещи.

Моя задача довольнопросто.Я буду использовать Axios для отправки некоторой полезной нагрузки на внешний API.Этот API может дать мне ошибку или не доступен в то время.Этот код очень прост, но в конце он будет включать в себя реализацию Axios:

exports.handler = async (event, context) => {   
    event.Records.forEach(record => {
    const { body } = record;
    const { messageAttributes } = record;
    console.log(body)
    console.log(messageAttributes);
  });  
    let somethingWentWrongWithApi = new Error();
    throw somethingWentWrongWithApi;    
}; 

После запуска, через некоторое время я вижу сообщение в DLQ, и оригинальный SQS, как я и ожидал, пуст.1008 *

В реальном коде у меня будет блок catch.И внутри я выкину ошибку, точно так же как в примере.Лямбда попытается выполнить это три раза (я не уверен, откуда я получил эту информацию).Затем он вернет его в SQS, где, в свою очередь, SQS переведет его в DLQ.

Интересно, следует ли реализовать в Lambda повторные попытки и после трех раз выдать ошибку ... или просто выбросить ее?и полагаться на существующий процесс (трижды повторное рассмотрение)?

Я все еще читаю о различных настройках в SQS и Lambda.

1 Ответ

0 голосов
/ 09 февраля 2019

Чтобы продлить попытки выполнения, вам нужно перейти на:

  1. Служба SQS;
  2. Щелкните правой кнопкой мыши на SQS;
  3. Выберите Настроить очередьoption ;
  4. В строке Параметры очереди недоставленных сообщений вы можете увидеть свойство Максимальное количество полученных (которое можно установить в диапазоне от 1 до 1000).

Об ошибках.Если что-то идет не так на стороне лямбды, то лямбда выдает ошибку, вы можете проверить, какие ошибки выдают с помощью cloudwatch.

  1. Перейти к aws CloudWatch;
  2. На правой панели найдите Журналы;
  3. Chose Log Group.

Если у вас есть какие-либо дополнительные вопросы, просто вызовите меня.Я постараюсь ответить на них и расширю этот ответ.

...