

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

# 在 Amazon SQS 中設定長輪詢
<a name="best-practices-setting-up-long-polling"></a>

當 `[ReceiveMessage](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_ReceiveMessage.html)` API 動作的等待時間大於 0 時，*長輪詢*就會生效。最長輪詢等待時間上限為 20 秒。長輪詢可透過減少空回應數量 （當請求沒有可用的訊息時`ReceiveMessage`) 和誤報空回應 （當訊息可用但未包含在回應中時），協助降低使用 Amazon SQS 的成本。如需詳細資訊，請參閱[Amazon SQS 短輪詢和長輪詢](sqs-short-and-long-polling.md)。

為確保最佳訊息處理，請使用下列策略：
+ 在大多數情況下，您可以設定 `ReceiveMessage` 等待時間為 20 秒。如果 20 秒對於您的應用程式來說太長，可以設定較短的 `ReceiveMessage` 等待時間 (最低 1 秒)。如果您不使用 AWS 開發套件存取 Amazon SQS，或者如果您將 AWS 開發套件設定為等待時間較短，則可能需要修改 Amazon SQS 用戶端，以允許更長的請求或使用更短的等待時間進行長輪詢。
+ 如果您對多個佇列實作長輪詢，請為每個佇列使用一個執行緒，而非所有佇列使用單一執行緒。為每個佇列各使用一個執行緒可讓您的應用程式在訊息可供使用時，分別處理每個佇列中的訊息，而將單一執行緒用於輪詢多個佇列則可能導致您的應用程式無法處理其他佇列中的可用訊息，因為它必須等候沒有任何可用訊息的佇列 (最長 20 秒)。

**重要**  
若要避免 HTTP 錯誤，請確定 `ReceiveMessage` 請求的 HTTP 回應逾時比 `WaitTimeSeconds` 參數長。如需詳細資訊，請參閱 [ReceiveMessage](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_ReceiveMessage.html)。