J L*_*J L 3 amazon-web-services
我的 sqs 队列每天收到 100 万条消息(例如发送的消息数),每天收到的空消息数约为 250 万条,所以我想 1 个月的消息总数约为 1.05 亿条,但亚马逊账单显示其为 255月请求数百万。
请求是如何以 sqs 计算的?
每个命令算作 2 个请求吗?
每个 API 交互都按ceil(payload_size_kb / 64kb)请求的数量计费,因此每个请求(发送、接收、空接收)按从 1 到 4(256kb 是最大有效负载)的请求数量计费。
请参阅https://aws.amazon.com/sqs/pricing/#request_pricing。
如果您每天有 250 万个空接收,那么您要么有大量的消费者,要么没有使用长轮询。您绝对应该使用长轮询。我从来没有遇到过不合适的情况。
长轮询通过消除空响应(当没有可用于 ReceiveMessage 请求的消息时)和虚假空响应(当消息可用但未包含在响应中)的数量来帮助降低使用 Amazon SQS 的成本。
https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-long-polling.html
长轮询有时会被误解,因为队列参数被称为Receive Message Wait Time和WaitTimeSeconds 之类的东西,这偶尔会被误解为意味着消费者将等待或延迟这么多秒......但事实并非如此。这只是当 0 条消息可用时消费者等待的时间。当消息可用时,它仍然会立即返回。如果队列为空并且消费者在下一条消息到达时进入 20 秒长轮询 7 秒,则消费者不会等待剩余的 13 秒。新消息立即返回。
您几乎总是希望使用长轮询,并使用最大可能值 20 秒。这个值应该真的是默认值,并且应该要求需要其他任何东西的消费者来指定它。
如果您的消费者一次可以处理多条消息,那么将请求的消息数量增加到最大值 10 也会减少计费请求的数量。同样,将此值设置为大于 1 不会增加等待时间。如果可用消息少于 max 个,则在长轮询时立即返回可用数量。您只在可用消息为 0 时等待。
| 归档时间: |
|
| 查看次数: |
2810 次 |
| 最近记录: |