在 Amazon SQS 中設置長輪詢 - Amazon Simple Queue Service

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

在 Amazon SQS 中設置長輪詢

ReceiveMessage API 動作的等待時間大於 0 時,長輪詢就會生效。最長輪詢等待時間上限為 20 秒。長輪詢可減少空回應 (沒有 ReceiveMessage 請求可用的訊息) 和 False 空回應 (有可用訊息但不包含在回應中) 的數目,藉以降低使用 Amazon SQS 的成本。如需詳細資訊,請參閱 Amazon SQS 短期和長輪詢

為確保最佳訊息處理,請使用下列策略:

  • 在大多數情況下,您可以設定 ReceiveMessage 等待時間為 20 秒。如果 20 秒對於您的應用程式來說太長,可以設定較短的 ReceiveMessage 等待時間 (最低 1 秒)。如果您不使用 AWS 開發套件存取 Amazon SQS,或者將 AWS SDK 設定為具有較短的等待時間,則可能必須修改 Amazon SQS 用戶端,以允許更長的請求或使用較短的等待時間進行長輪詢。

  • 如果您對多個佇列實作長輪詢,請為每個佇列使用一個執行緒,而非所有佇列使用單一執行緒。為每個佇列各使用一個執行緒可讓您的應用程式在訊息可供使用時,分別處理每個佇列中的訊息,而將單一執行緒用於輪詢多個佇列則可能導致您的應用程式無法處理其他佇列中的可用訊息,因為它必須等候沒有任何可用訊息的佇列 (最長 20 秒)。

重要

若要避免 HTTP 錯誤,請確定 ReceiveMessage 請求的 HTTP 回應逾時比 WaitTimeSeconds 參數長。如需詳細資訊,請參閱ReceiveMessage