AWS SQS+Lambda,我应该删除消息吗?NodeJS



我最近开始使用AWS,我的第一项工作是使用lambda函数使用SQS队列。

我知道我不需要调用receiveMessage,因为lambda函数已经在这里接收消息:

exports.handler = async(event, context) => {
let i = 0;
for (const record of event.Records) {
...
}
};

我的问题是:我是否应该为收到的每条消息调用sqs.deleteMessage?我知道lambda函数会自动删除已处理的消息,但一位朋友告诉我,我仍然必须手动调用deleteMessage,因为如果发生错误,所有消息都会返回队列。如果我不手动删除每条消息。

谢谢!

如果Lambda函数返回成功代码,则消息将自动删除。如果发生错误,并且函数返回错误响应,则消息将再次排队(取决于队列的设置(。你永远不应该自己删除邮件。为什么要绕过SQS中内置的错误处理和重试功能?

如果您从不希望重试消息,那么只需适当地配置队列即可。特别是,应使用SQS队列上的Maximum接收和DLQ设置(可选(来定义错误处理行为。

相关内容

最新更新