Amazon SQS 訊息配額 - Amazon Simple Queue Service

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

Amazon SQS 訊息配額

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

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

單一訊息批次請求最多可包含 10 個訊息。如需詳細資訊,請參閱Amazon SQS 批次動作一節的設定 AmazonSQSBufferedAsyncClient

訊息內容

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

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

訊息群組 ID

MessageGroupId 對於 FIFO 佇列而言是必需的。如果您在傳送訊息至 FIFO 佇列MessageGroupId時未提供 ,動作會失敗。在標準佇列中,使用 MessageGroupId可啟用公平佇列。建議您在使用公平佇列時,在所有訊息MessageGroupId中包含 。

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

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

標準佇列

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

FIFO 佇列

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

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

FIFO 佇列的高輸送量

Amazon SQS FIFO 限制是根據 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 TPS 的 10 倍)。

  • 美國東部 (俄亥俄) 和歐洲 (法蘭克福):每秒最多 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 個字元)。上限為 1,048,576 位元組 (1 MiB)。

若要傳送訊息大於 1 MiB,您可以使用適用於 Java 的 Amazon SQS 延伸用戶端程式庫和適用於 Python 的 Amazon SQS 延伸用戶端程式庫。此程式庫可讓您傳送包含 Amazon S3 中訊息承載參考的 Amazon SQS 訊息。承載大小上限為 2 GB。

注意

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

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