FIFO 主題的訊息排序詳細資料 - Amazon Simple Notification Service

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

FIFO 主題的訊息排序詳細資料

Amazon SNS FIFO 主題一律會依訊息發布到主題的確切順序,將訊息傳送到訂閱的 Amazon SQS 佇列,並僅傳送一次。訂閱 Amazon SQS FIFO 佇列後,佇列的取用者會以訊息傳送到佇列接收訊息的確切順序,且不會重複。不過,如果訂閱了 Amazon SQS 標準佇列,佇列的取用者可能會接收非按順序排列的訊息,而且會接收不止一次。如此可進一步使發布者和訂閱用戶解耦,讓訂閱用戶在訊息消耗和成本最佳化方面具有更大的彈性,如下圖所示,根據 FIFO 主題範例使用案例

在汽車零部件電子商務平台中進行嚴格排序的訊息傳遞。

請注意,訂閱者沒有隱含的順序。此如下列範例所示:m1 首先交付給批發訂閱用戶,然後交付給零售訂閱用戶,接著是分析訂閱用戶。訊息 m2 首先傳遞給零售訂閱用戶,然後傳遞給批發訂閱用戶,最後傳遞給分析訂閱用戶。雖然這兩個訊息以不同的順序傳遞給訂閱用戶,但訊息順序會保留每個 Amazon SQS FIFO 訂閱用戶。每個訂閱者與任何其他訂閱者彼此獨立。

嚴格排序的訊息傳遞給每個訂閱者。

如果 Amazon SQS 佇列訂閱用戶無法連線,則可能會不同步。例如,假設批發應用程式佇列擁有者錯誤地改變了Amazon SQS 佇列政策,以防止 Amazon SNS 服務主體將訊息傳遞到佇列。在這種情況下,傳遞到批發佇列的價格更新失敗,而零售和分析佇列的傳遞成功,導致訂閱用戶不同步。當批發應用程式佇列擁有者更正其佇列政策時,Amazon SNS 會繼續將訊息傳送到訂閱佇列。任何在目標佇列設定不正確時發布至主題的訊息都會被捨棄,除非對應的訂閱具有已設定的無效字母佇列

批發佇列訂閱者變得暫時無法連線。

您可以讓多個應用程式 (或同一應用程式中的多個執行緒) 並行將訊息發佈至 SNS FIFO 主題。當您執行這項操作時,您可以有效率地將訊息順序委派給 Amazon SNS 服務。若要判斷已建立的訊息順序,您可以檢查序號。

序號是 Amazon SNS 指派給每封訊息之大型、不連續的數字。序號的長度是 128 位元,而且會在每個訊息群組繼續增加。序號會傳遞至訂閱的 Amazon SQS 佇列,做為訊息內文的一部分。但是,如果您啟用原始訊息交付,則傳遞至 Amazon SQS 佇列的訊息不包含序號或任何其他 Amazon SNS 訊息中繼資料。

Amazon SNS 會為每個訊息指派唯一的序列號,並將序列號傳遞給 Amazon SQS。

Amazon SNS FIFO 主題定義訊息群組內容中的排序。如需更多詳細資訊,請參閱 FIFO 主題的訊息群組