【发布时间】:2018-12-30 17:42:02
【问题描述】:
Amazon SQS 支持两种可用消息的轮询模式:短轮询和长轮询。对于长轮询,消费者指定 1-20 秒的超时时间来等待可用消息。
默认情况下,Amazon SQS 使用 短轮询,仅查询其服务器的子集(基于加权随机分布),以确定是否有任何消息可用于响应。
长轮询提供以下好处:
- 通过允许 Amazon SQS 在发送响应之前等待队列中可用的消息来消除空响应。除非连接超时,否则对
ReceiveMessage请求的响应至少包含一条可用消息,最多为ReceiveMessage操作中指定的最大消息数。- 通过查询所有(而不是部分)Amazon SQS 服务器来消除错误的空响应。
- 在消息可用时立即返回。
以上特点让长轮询看起来相当不错。那么是否存在更可取短轮询的用例?
特别是对于高吞吐量队列,短轮询比长轮询更快吗?
【问题讨论】:
标签: amazon-web-services amazon-sqs polling long-polling