

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

# FIFO 主題的 Amazon SNS 訊息分組
<a name="fifo-message-grouping"></a>

屬於相同群組的郵件會依相對於群組的嚴格順序逐一處理。

當您發佈訊息到 Amazon SNS FIFO 主題時，則需要設定訊息群組 ID。群組 ID 是強制權杖，指定訊息屬於特定訊息群組。SNS FIFO 主題會將群組 ID 傳遞至訂閱的 Amazon SQS FIFO 佇列。SNS FIFO 主題或 SQS FIFO 佇列中的群組 ID 數目沒有限制。訊息群組識別碼不會傳遞至 Amazon SQS 標準佇列。

訊息群組與訂閱之間沒有相似性。因此，發佈至任何訊息群組的訊息會傳遞至所有訂閱的佇列，受限於附加至訂閱的任何篩選政策。如需更多詳細資訊，請參閱 [FIFO 主題的 Amazon SNS 訊息傳遞](fifo-message-delivery.md) 及 [FIFO 主題的 Amazon SNS 訊息篩選](fifo-message-filtering.md)。

在[汽車零件價格管理範例使用案例](fifo-example-use-case.md)中，平台上銷售的每個產品都有專用的訊息群組。相同的 Amazon SNS FIFO 主題用於處理所有價格更新。價格更新的順序會保留在單一汽車零件產品的上下文中，但非跨多個產品。下圖顯示此運作方式。請注意，對於訊息群組 ID 為 **product-214** 的產品，訊息 **m1** 會在 **m4** 之前處理。在使用 Amazon SNS FIFO 到 Amazon SQS FIFO 的整個工作流程中都會保留此順序。同樣地，對於訊息群組 ID 為 **product-799** 的產品，訊息 **m2** 會在 **m3** 之前處理。不過，使用 Amazon SQS 標準佇列時，不再保證訊息順序，且訊息群組不存在。所以此**產品-214** 和**產品-799** 訊息群組彼此獨立，因此訊息的排序方式之間沒有任何關係。

![\[在涉及不同 和 訊息群組 IDs 的 Amazon SNS FIFO 主題案例中，訊息排序 AWS 服務 和重複資料刪除的運作方式範例。它顯示從 Lambda 函數透過 Amazon SNS FIFO 主題到各種 Amazon SQS 佇列 (FIFO 和標準） 的訊息流程，在 FIFO 佇列中保持嚴格的順序，同時在標準佇列中示範潛在的障礙。此設定用於強調應用程式的訊息排序的重要性，例如電子商務平台的價格更新，並強調每個訊息群組如何在不同的消費者服務中獨立維護其順序。\]](http://docs.aws.amazon.com/zh_tw/sns/latest/dg/images/sns-fifo-grouping.png)


## 使用訊息群組 ID 傳遞資料以改善效能
<a name="fifo-message-grouping-message-group-ids"></a>

為了最佳化傳遞輸送量，Amazon SNS FIFO 主題會平行傳遞來自不同訊息群組的訊息，同時嚴格維護每個訊息群組內的訊息順序。每個單獨的訊息群組，每秒最多可傳遞 300 則訊息。因此，若單一主題要達到高輸送量，請使用大量不同的訊息群組 ID。透過利用訊息群組的多樣化設定，Amazon SNS FIFO 主題會自動在大量並行分區之間傳遞消息。

**注意**  
Amazon SNS FIFO 主題已針對訊息群組 IDs 之間的訊息統一分佈進行最佳化，無論群組數量為何。 AWS 建議您使用大量不同的訊息群組 IDs 來最佳化效能。

當使用高輸送量發至您的 Amazon SNS FIFO 主題，並訂閱一或多個 Amazon SQS FIFO 佇列時，建議您在佇列上啟用高輸送量。如需詳細資訊，請參閱 *Amazon 簡單佇列服務開發人員指南*中的 [FIFO 佇列的高輸送量](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/high-throughput-fifo.html)。