本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
在 Amazon SQS 中设置长轮询
当 ReceiveMessage
API 操作的等待时间大于 0 时,长轮询生效。最长长轮询等待时间为 20 秒。长轮询通过消除空响应的数量(ReceiveMessage
请求时没有消息可用时)并消除假的空响应(消息可用但未包含在响应中),帮助降低使用 Amazon SQS 的成本。有关更多信息,请参阅 Amazon SQS 短轮询和长轮询。
要确保最佳消息处理,请使用以下策略:
-
在大多数情况下,您可以将
ReceiveMessage
等待时间设置为 20 秒。如果 20 秒对您的应用程序来说太长,则可设置较短的ReceiveMessage
等待时间(最少 1 秒)。如果不使用 Amazon SDK 访问 Amazon SQS,或者将 Amazon SDK 配置为具有较短的等待时间,则可能必须修改 Amazon SQS 客户端,才能允许时间更长的请求或对长轮询使用较短的等待时间。 -
如果您对多个队列实施长轮询,则对每个队列使用一个线程,而不是对所有队列使用单个线程。如果对每个队列使用一个线程,您的应用程序将能够在各队列中的消息可用时处理这些消息;如果使用单个线程来轮询多个队列,则可能导致应用程序在等待(最长 20 秒)没有任何可用消息的队列时无法处理其他队列中的可用消息。
重要
为避免 HTTP 错误,请确保 ReceiveMessage
请求的 HTTP 响应超时比 WaitTimeSeconds
参数更长。有关更多信息,请参阅 ReceiveMessage。