本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
FIFO 主題的 Amazon SNS 訊息群組
屬於相同群組的郵件會依相對於群組的嚴格順序逐一處理。
當您將訊息發佈至 Amazon SNSFIFO主題時,您可以設定訊息群組 ID。群組 ID 是強制權杖,指定訊息屬於特定訊息群組。SNS FIFO 主題會將群組 ID 傳遞給訂閱的 Amazon SQSFIFO佇列。SNS FIFO 主題或SQSFIFO佇列IDs中的群組數量沒有限制。訊息群組 ID 不會傳遞至 Amazon SQS標準佇列。
訊息群組與訂閱之間沒有相似性。因此,發佈至任何訊息群組的訊息會傳遞至所有訂閱的佇列,受限於附加至訂閱的任何篩選政策。如需更多詳細資訊,請參閱 FIFO 主題的 Amazon SNS 訊息傳遞 及 FIFO 主題的 Amazon SNS 訊息篩選。
在汽車零件價格管理範例使用案例中,平台上銷售的每個產品都有專用的訊息群組。相同的 Amazon SNSFIFO主題用於處理所有價格更新。價格更新的順序會保留在單一汽車零件產品的上下文中,但非跨多個產品。下圖顯示此運作方式。請注意,對於訊息群組 ID 為 product-214 的產品,訊息 m4 會在訊息 m1 之前處理。此序列會在整個工作流程中使用 Amazon SNSFIFO至 Amazon SQS 保留FIFO。同樣地,對於訊息群組 ID 為 product-799 的產品,只要工作流程使用 Amazon SNSFIFO和 Amazon,訊息 m3 會在訊息 m2 SQS 之前處理FIFO。不過,使用 Amazon SQS標準佇列時,無法保證訊息順序,且訊息群組不存在。所以此產品-214 和產品-799 訊息群組彼此獨立,因此訊息的排序方式之間沒有任何關係。
![訊息排序和重複資料刪除在涉及不同 AWS 服務 和 訊息群組 的 Amazon SNSFIFO主題案例中的運作方式範例IDs。它顯示從 Lambda 函數透過 Amazon SNSFIFO主題到各種 Amazon SQS佇列 (FIFO 和 標準) 的訊息流程,在顯示標準佇列中的潛在障礙時,保持FIFO佇列中的嚴格順序。此設定用於強調電子商務平台中價格更新等應用程式中訊息排序的重要性,強調每個訊息群組如何在不同消費者服務中獨立維護其順序。](images/sns-fifo-grouping.png)
依訊息群組分發資料IDs,以提升效能
為了最佳化交付輸送量,Amazon SNSFIFO主題會平行傳遞來自不同訊息群組的訊息,而訊息順序會嚴格維持在每個訊息群組內。每個單獨的訊息群組,每秒最多可傳遞 300 則訊息。因此,為了達到單一主題的高輸送量,請使用大量不同的訊息群組 IDs。透過使用一組不同的訊息群組,Amazon SNSFIFO主題會自動將訊息分散到更多平行分割區。
注意
無論您 AWS 使用大量不同訊息群組IDs來達到最佳化效能IDs,Amazon SNSFIFO主題都會針對訊息群組 之間的訊息均勻分佈進行最佳化。
以高輸送量和訂閱一或多個 Amazon SQSFIFO佇列發佈至 Amazon SNSFIFO主題時,建議您在佇列上啟用高輸送量。如需詳細資訊,請參閱 Amazon Simple Queue Service 開發人員指南 FIFO 中的佇列高輸送量。