Amazon SQS 訊息配額 - Amazon Simple Queue Service

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

Amazon SQS 訊息配額

下表列出訊息相關的配額。

配額 描述
批次訊息 ID 批次處理訊息 ID 最多可有 80 個字元。接受以下字元:英數字元、連字號 (-) 和底線 (_)。
訊息屬性 一個訊息最多可包含 10 個中繼資料屬性。
訊息批次

單一訊息批次請求最多可包含 10 個訊息。如需詳細資訊,請參閱Amazon SQS 批次動作一節的配置亞馬遜 BufferedAsyncClient

訊息內容

訊息只能包含 XML、 JSON和 未格式化的文字。允許使用以下 Unicode 字元:#x9 | #xA | #xD | #x20#xD7FF | #xE000#xFFFD | #x10000#x10FFFF

此清單中不包含的任何字元都會被拒絕。如需詳細資訊,請參閱字元的 W3C 規格

訊息群組 ID

取用待處理的訊息,避免堆積具有相同訊息群組 ID 的大量待處理訊息。

MessageGroupId FIFO佇列需要 。您無法將它用於標準佇列。

您必須將非空白 MessageGroupId 與訊息相關聯。若未提供 MessageGroupId,該動作會失敗。

MessageGroupId 的長度上限為 128 個字元。有效值:英數字元和標點符號 (!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~)

訊息保留 在預設情況下,訊息會保留 4 天。最低為 60 秒 (1 分鐘)。最高為 1,209,600 秒 (14 天)。
訊息輸送量

標準佇列

每個動作 (、 SendMessage或 ) 的標準佇列支援非常高ReceiveMessage、幾乎無限制的每秒API呼叫數量DeleteMessage。這種高輸送量使其成為需要快速處理大量訊息的使用案例的理想選擇,例如即時資料串流或大規模應用程式。雖然標準佇列會根據需求自動擴展,但監控使用模式以確保最佳效能至關重要,尤其是工作負載較高的區域。

FIFO 佇列

  • FIFO 佇列中的每個分割區每秒限制為 300 個交易,每個API動作 (SendMessageReceiveMessageDeleteMessage)。此限制特別適用於非高輸送量模式。透過切換至高輸送量模式,您可以超過此預設限制。若要啟用高輸送量模式,請參閱 在 Amazon SQS 中為 FIFO 佇列啟用高輸送量

  • 如果您使用批次處理,則非高輸送量FIFO佇列支援每個API動作每秒最多 3,000 則訊息 (SendMessageReceiveMessageDeleteMessage)。每秒 3,000 則訊息代表 300 個API呼叫,每個呼叫都有一批 10 則訊息。

FIFO佇列的高輸送量

Amazon SQSFIFO限制是根據API請求數量,而非訊息限制。對於高輸送量模式,這些API請求限制如下:

交易輸送量限制 (非批次API呼叫)

這些限制會定義每個API操作 (例如 SendMessageReceiveMessageDeleteMessage) 可以獨立執行的頻率,確保每秒允許的交易內的系統效能有效 (TPS)。

下列限制是以非批次API通話為基礎:

  • 美國東部 (維吉尼亞北部)、美國西部 (奧勒岡) 和歐洲 (愛爾蘭):每秒最多 70,000 筆交易 (TPS)。

  • 美國東部 (俄亥俄) 和歐洲 (法蘭克福):最多 19,000 TPS。

  • 亞太區域 (孟買)、亞太區域 (新加坡)、亞太區域 (雪梨) 和亞太區域 (東京):最多 9,000 TPS。

  • 歐洲 (倫敦) 和南美洲 (聖保羅):最多 4,500 TPS。

  • 所有其他 AWS 區域:預設輸送量為 2,400 TPS。

透過批次處理將輸送量最大化

在單一API呼叫中處理多個訊息,進而大幅提升效率。批次處理可讓您在單一API請求中傳送、接收或刪除最多 10 則訊息,而不是個別處理每則訊息。這可減少API呼叫總數,可讓您每秒處理更多訊息,同時保持在 區域的交易限制 (TPS) 內,將輸送量和系統效能最大化。如需詳細資訊,請參閱透過 Amazon SQS 使用水平擴展和動作批次處理來增加輸送量

下列限制以批次API呼叫為基礎:

  • 美國東部 (維吉尼亞北部)、美國西部 (奧勒岡) 和歐洲 (愛爾蘭):每秒最多 700,000 則訊息 (非批次限制 70,000 的 10 倍TPS)。

  • 美國東部 (俄亥俄) 和歐洲 (法蘭克福):每秒最多 190,000 則訊息。

  • 亞太區域 (孟買)、亞太區域 (新加坡)、亞太區域 (雪梨) 和亞太區域 (東京):每秒最多 90,000 則訊息。

  • 歐洲 (倫敦) 和南美洲 (聖保羅):每秒最多 45,000 則訊息。

  • 所有其他 AWS 區域:每秒最多 24,000 則訊息。

最佳化批次以外的輸送量

雖然批次處理可以大幅提高輸送量,但務必考慮其他最佳化FIFO效能的策略:

  • 多個訊息群組之間分發訊息 IDs – 由於單一群組內的訊息會依序處理,因此在多個訊息群組之間分發工作負載可實現更好的平行處理和更高的整體輸送量。如需詳細資訊,請參閱SQS FIFO 佇列高輸送量的分割區和資料分配

  • 有效使用API呼叫 – 將不必要的API呼叫降到最低,例如頻繁的可見性變更或重複的訊息刪除,以最佳化可用 的使用TPS並提高效率。

  • 使用長輪詢接收 – 在接收請求WaitTimeSeconds中設定長輪詢,以便在沒有訊息可用時減少空回應、減少不必要的API呼叫,以及更好地使用TPS配額。

  • 請求輸送量增加 – 如果您的應用程式需要高於預設限制的輸送量,請使用 Service Quotas 主控台請求增加輸送量。這對於高需求工作負載或具有較低預設限制的 區域而言可能是必要的。若要啟用高輸送量模式,請參閱 在 Amazon SQS 中為 FIFO 佇列啟用高輸送量

訊息計時器 訊息的預設 (最小值) 延遲時間為 0 秒。最大值為 15 分鐘。
訊息大小

最小訊息大小為 1 位元組 (1 個字元)。最大為 262,144 位元組 (256 KiB)。

若要傳送訊息大於 256 KiB您可以使用適用於 Java 的 Amazon SQS Extended Client Library適用於 Python 的 Amazon SQS Extended Client Library。此程式庫可讓您傳送 Amazon SQS 訊息,其中包含 Amazon S3 中訊息承載的參考。承載大小上限為 2 GB。

注意

此延伸程式庫僅適用於同步用戶端。

訊息可見性逾時 訊息的預設可見性逾時為 30 秒。最小值為 0 秒。時間最長可設為 12 小時。
政策資訊 最大配額是 8,192 位元組、20 個陳述式、50 個委託人,或 10 個條件。如需詳細資訊,請參閱 Amazon SQS 政策配額