【发布时间】:2019-07-01 11:40:56
【问题描述】:
我已经设置了一个 SQS、DeadLetterQue (DLQ) 和一个 lambda。我对 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 为空,正如我所料。
在实际代码中,我将有 catch 块。在里面我会抛出错误,就像例子一样。 Lambda 将尝试执行 3 次(我不确定我从哪里得到这些信息)。然后,它会将其返回给 SQS,然后 SQS 会将其推送到 DLQ。
我想知道,我应该在 Lambda 重试中实现,并在 3 次后抛出错误......还是仅仅抛出它并依赖现有进程(3 次重试)?
我仍在阅读有关 SQS 和 Lambda 的不同设置。
【问题讨论】:
标签: amazon-web-services aws-lambda amazon-sqs