nar*_*ibo 3 amazon-sqs amazon-web-services long-polling aws-lambda
目前,我有一个AWS SQS作为我的AWS Lambda函数的触发器。
我想实施长时间轮询以降低成本,因为我已经用完了每月免费套餐的70%,其中大部分来自空收据。
我尝试通过将queue属性更改为ReceiveMessageWaitTimeSeconds来设置长轮询20 seconds:
但是,这似乎并没有减少空接收的数量,在2:00-3:00之间的11/19更改了设置。

根据AWS文档,WaitTimeSeconds优先级高于队列属性ReceiveMessageWaitTimeSeconds
通过以下两种方式之一将ReceiveMessage请求的WaitTimeSeconds参数设置为0时,将发生短轮询:
- ReceiveMessage调用将WaitTimeSeconds设置为0。
- ReceiveMessage调用未设置WaitTimeSeconds,但是队列属性ReceiveMessageWaitTimeSeconds设置为0。
注意
对于ReceiveMessage操作的WaitTimeSeconds参数,在1到20之间设置的值优先于为队列属性ReceiveMessageWaitTimeSeconds设置的任何值。
由于AWS Lambda正在接收SQS请求,因此我认为WaitTimeSeconds无法对其进行配置。
为什么我的长轮询配置在这种情况下不起作用?我是误解了什么,还是配置错误?
谢谢!
其实长轮询的工作在你的情况。
5 lambdas * polling / 20 seconds * 3600 seconds in an hour = 900 receives/hour
我认为您错过的是“ 5个最小并发lambda”。Lambda Scaling Behavior文档中暗含了这一点,但是在公告/深潜博客的“其他信息”部分中则更有效地且明确地列出了这一点。
最初创建并启用SQS事件源映射时,或者在一段时间没有通信后首次出现消息时,Lambda服务将开始使用五个并行的 长轮询连接来轮询SQS队列。Lambda服务监视机上消息的数量,当它检测到该消息数量呈上升趋势时,它将使轮询频率每分钟增加20个ReceiveMessage请求,而功能并发性每分钟增加60个调用。
| 归档时间: |
|
| 查看次数: |
841 次 |
| 最近记录: |