本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
對 Amazon SQS 中的 FIFO 限流問題進行故障診斷
根據預設,FIFO 佇列支援 SendMessage
、 ReceiveMessage
和 的每個 API 動作每秒 300 個交易DeleteMessage
。即使佇列中的訊息可用,超過 300 TPS 的請求也會收到ThrottlingException
錯誤。若要緩解這種情況,您可以使用下列方法:
-
使用 Amazon SQS API 批次動作
SendMessageBatch
、DeleteMessageBatch
和ChangeMessageVisibilityBatch
來提高每個 API 動作每秒高達 3,000 則訊息的 TPS 限制,並降低成本。針對ReceiveMessage
API,將MaxNumberofMessages
參數設定為每次交易最多接收十則訊息。如需詳細資訊,請參閱Amazon SQS 批次動作。 -
對於高輸送量的 FIFO 佇列,請遵循建議來最佳化分割區使用率。以批次傳送具有相同訊息群組 IDs的訊息。刪除訊息,或變更來自相同
ReceiveMessage
API 請求的接收控點批次中的訊息可見性逾時值。 -
增加唯一
MessageGroupId
值的數量。這允許跨 FIFO 佇列分割區均勻分佈。如需詳細資訊,請參閱使用 Amazon SQS 訊息群組 ID。
如需詳細資訊,請參閱 AWS 知識中心指南中的為什麼我的 Amazon SQS FIFO 佇列不會傳回其他訊息群組中的所有訊息或訊息?