首页 > 解决方案 > 从 lambda 触发器返回而不从队列中删除消息

问题描述

在我的 lambda 函数中,我将receiptHandle作为正文数据发送到服务器。然后,此服务器必须完成工作并告诉 SQS 删除此消息。
问题是aws docs说:

...
如果您的函数成功处理批处理,Lambda 会从队列中删除消息。如果您的函数受到限制、返回错误或没有响应,则该消息将再次可见。

这意味着如果我将 SQS 消息删除委托给另一个服务并结束 Lambda 执行,则 SQS 消息将被此 Lambda 出口删除,这是我不希望发生的。消息的可见性超时也应该保持不变。
有没有办法做到这一点?

标签: amazon-web-servicesaws-lambdaamazon-sqs

解决方案


有没有办法做到这一点?

不,内置的SQS -> Lambda集成以这种方式工作(即,一旦 Lambda 函数成功返回,它就会从 SQS 中删除一条消息,如您链接和引用的文档中所述),并且它是不可配置的。

[...] 我不想发生这种情况。

为什么要将SQS 消息删除委托给另一个服务?你真正想要达到什么目的?


推荐阅读