繁体   English   中英

如何防止 AWS Lambda 从 SQS 队列中删除消息

[英]How to prevent AWS Lambda from deleting message from SQS queue

我有一个 Lambda function,它将在向 SQS 队列发送消息时发送 SNS 通知。 但我观察到 Lambda 将在处理完消息后从队列中删除消息,并在此处提及

有没有办法让 lambda 失败,而实际上不会在 java 中引发新的异常。

根据您的描述,您似乎应该考虑为您的用例使用扇出场景:

“扇出”场景是指将 Amazon SNS 消息发送到主题,然后复制并推送到多个 Amazon SQS 队列、HTTP 终端节点或 email 地址。

在此处输入图像描述

在这种情况下,您的 SNS 会将消息发布到两个 SQS 队列 随后,每个团队都有自己的消息可以工作,您无需强制终止 lambda 即可将已处理的消息保留在单个队列中。

默认情况下,SQS 到 Lambda 集成意味着一旦 function 开始处理队列中的消息将变得不可见,一旦 ZC1C425268E68385D1AB5074C17A94F14 完成,队列中的消息将从队列中删除。

如果 function 失败(退出错误),则消息将 go 恢复为“可见”,并将由新的 lambda 调用再次处理。 这将一直持续到您的重新驱动策略中配置了任何内容。

无论如何,大约 4 天后,消息将开始从队列中清除,SQS 队列不是永久存储位置。 您不能将 SQS 用作永久存储。

对您的问题的简短回答是通过以非零状态退出来使调用失败 - 但请注意,消息将被重新处理,除非您有将其推入 DLQ 的重新驱动策略。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM