我已经设置了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将尝试执行三次(我不确定从何处获得此信息)。然后,它将其返回给SQS,然后SQS将其推送到DLQ。
我想知道,我应该在Lambda重试中实现,并且在三次抛出错误之后...还是仅仅将其抛出并依赖现有过程(三次重试)?
我仍在阅读有关SQS和Lambda的不同设置的信息。
答案 0 :(得分:1)
要扩展执行尝试,您必须转到:
关于错误。如果lambda方面出了问题,然后lambda引发了错误,则可以检查cloudwatch引发的错误类型。
如果还有其他问题,请召唤我。我将尝试回答他们,并将扩展该答案。