在 Amazon SQS 中设置长时间投票 - Amazon Simple Queue Service

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

在 Amazon SQS 中设置长时间投票

ReceiveMessage API 操作的等待时间大于 0 时,长轮询生效。最长长轮询等待时间为 20 秒。长轮询通过消除空响应的数量(ReceiveMessage 请求时没有消息可用时)并消除假的空响应(消息可用但未包含在响应中),帮助降低使用 Amazon SQS 的成本。有关更多信息,请参阅 Amazon SQS 短轮询和长轮询

要确保最佳消息处理,请使用以下策略:

  • 在大多数情况下,您可以将 ReceiveMessage 等待时间设置为 20 秒。如果 20 秒对您的应用程序来说太长,则可设置较短的 ReceiveMessage 等待时间(最少 1 秒)。如果您不使用 AWS 软件开发工具包来访问 Amazon SQS,或者将 AWS 软件开发工具包配置为缩短等待时间,则可能需要修改您的 Amazon SQS 客户端,以允许更长的请求或使用更短的等待时间进行长时间轮询。

  • 如果您对多个队列实施长轮询,则对每个队列使用一个线程,而不是对所有队列使用单个线程。如果对每个队列使用一个线程,您的应用程序将能够在各队列中的消息可用时处理这些消息;如果使用单个线程来轮询多个队列,则可能导致应用程序在等待(最长 20 秒)没有任何可用消息的队列时无法处理其他队列中的可用消息。

重要

为避免 HTTP 错误,请确保 ReceiveMessage 请求的 HTTP 响应超时比 WaitTimeSeconds 参数更长。有关更多信息,请参阅ReceiveMessage