本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
FIFO 主題的訊息群組
屬於相同群組的郵件會依相對於群組的嚴格順序逐一處理。
當您發佈訊息到 Amazon SNS FIFO 主題時,則需要設定訊息群組 ID。群組 ID 是強制權杖,指定訊息屬於特定訊息群組。SNS FIFO 主題會將群組 ID 傳遞至訂閱的 Amazon SQS FIFO 佇列。SNS FIFO 主題或 SQS FIFO 佇列中的群組 ID 數目沒有限制。訊息群組識別碼不會傳遞至 Amazon SQS 標準佇列。
訊息群組與訂閱之間沒有相似性。因此,發佈至任何訊息群組的訊息會傳遞至所有訂閱的佇列,受限於附加至訂閱的任何篩選政策。如需更多詳細資訊,請參閱 FIFO 主題的訊息傳遞 及 FIFO 主題的訊息篩選。
在汽車零件價格管理範例使用案例中,平台上銷售的每個產品都有專用的訊息群組。相同的 Amazon SNS FIFO 主題用於處理所有價格更新。價格更新的順序會保留在單一汽車零件產品的上下文中,但非跨多個產品。下圖顯示此運作方式。請注意,對於具有產品-214 訊息群組 ID 的產品,m1 訊息一律會在 m4 訊息前處理。在使用 Amazon SNS FIFO 到 Amazon SQS FIFO 的整個工作流程中都會保留此順序。同樣地,對於訊息群組 ID 為產品-799 的產品,只要工作流程使用 Amazon SNS FIFO 和 Amazon SQS FIFO,就會在訊息 m3 之前處理訊息 m2。但是,使用 Amazon SQS 標準佇列時,訊息順序將不再保證,訊息群組也不存在。所以此產品-214 和產品-799 訊息群組彼此獨立,因此訊息的排序方式之間沒有任何關係。
![訊息會以相對於訊息群組的嚴格順序處理。](images/sns-fifo-grouping.png)
使用訊息群組 ID 傳遞資料以改善效能
為了最佳化傳遞輸送量,Amazon SNS FIFO 主題會平行傳遞來自不同訊息群組的訊息,同時嚴格維護每個訊息群組內的訊息順序。每個單獨的訊息群組,每秒最多可傳遞 300 則訊息。因此,若單一主題要達到高輸送量,請使用大量不同的訊息群組 ID。透過利用訊息群組的多樣化設定,Amazon SNS FIFO 主題會自動在大量並行分區之間傳遞消息。
注意
Amazon SNS FIFO 主題經過最佳化,可在訊息群組 ID 之間統一分配訊息,而不論群組數目為何。AWS 建議您使用大量不同的訊息群組 ID 以最佳化效能。
當使用高輸送量發至您的 Amazon SNS FIFO 主題,並訂閱一或多個 Amazon SQS FIFO 佇列時,建議您在佇列上啟用高輸送量。如需詳細資訊,請參閱 Amazon 簡單佇列服務開發人員指南中的 FIFO 佇列的高輸送量。