【发布时间】:2023-03-30 01:17:01
【问题描述】:
目前,我有一个 AWS SQS 作为我的 AWS Lambda 函数的触发器。
我想实施长轮询以降低成本,因为我已用完 70% 的每月免费套餐,大部分来自空接收。
我尝试通过将队列属性 ReceiveMessageWaitTimeSeconds 更改为 20 seconds 来设置长轮询:
但是,这似乎并没有减少空接收的数量,在 11 月 19 日的 2:00 - 3:00 之间更改了设置。
根据AWS Documentation,WaitTimeSeconds 优先于队列属性ReceiveMessageWaitTimeSeconds
短轮询发生在一个 WaitTimeSeconds 参数 ReceiveMessage 请求通过以下两种方式之一设置为 0:
- ReceiveMessage 调用将 WaitTimeSeconds 设置为 0。
- ReceiveMessage 调用未设置 WaitTimeSeconds,但队列属性 ReceiveMessageWaitTimeSeconds 设置为 0。
注意
对于 ReceiveMessage 操作的 WaitTimeSeconds 参数,一个 设置在 1 到 20 之间的值优先于为 队列属性 ReceiveMessageWaitTimeSeconds。
由于 AWS Lambda 正在接收 SQS 请求,我认为无法配置 WaitTimeSeconds。
为什么我的长轮询配置在这种情况下不起作用?是我误解了什么,还是我配置错了?
谢谢!
【问题讨论】:
-
为什么要使用 Amazon SQS 来触发 Lambda 函数?您可以改为向 Amazon SNS 发送消息,这也可以触发 Lambda 函数,但不需要轮询。您的应用程序是否特别需要使用 SQS?
-
我们更喜欢在信函保留期(最长 14 天)和死信队列的简单设置中使用 SQS
标签: amazon-web-services aws-lambda amazon-sqs long-polling