Я настроил 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.