FIFO 主題的訊息耐久性 - Amazon Simple Notification Service

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

FIFO 主題的訊息耐久性

Amazon SNS FIFO 主題和 Amazon SQS 佇列是耐用的。這兩種資源類型會在多個可用區域間冗餘儲存郵件,並提供無效字母佇列以處理例外情況。

在 Amazon SNS 中,當因用戶端或伺服器端錯誤而造成 Amazon SNS 主題無法存取訂閱的 Amazon SQS 佇列時,訊息傳遞就會失敗:

  • 當 Amazon SNS FIFO 主題有過時的訂閱中繼資料時,就會發生用戶端錯誤。用戶端錯誤的兩個常見原因是 Amazon SQS 佇列擁有者執行下列其中一項作業時:

    • 刪除佇列。

    • 以防止 Amazon SNS 服務主體傳遞訊息的方式變更佇列政策。

    Amazon SNS 不會重試傳遞因用戶端錯誤而失敗的訊息。

  • 伺服器端錯誤可能會發生在下列情況:

    • Amazon SQS 服務無法使用。

    • Amazon SQS 無法處理來自 Amazon SNS 服務的有效請求。

    發生伺服器端錯誤時,Amazon SNS FIFO 主題會在 23 天內最多重試失敗的傳遞 100,015 次。如需更多詳細資訊,請參閱 Amazon SNS 訊息傳遞重試

對於任何類型的錯誤,Amazon SNS 可以將訊息旁邊傳送到 Amazon SQS 無效字母佇列,因此資料不會遺失。

在 Amazon SQS 中,當消費者應用程式無法接收訊息、處理訊息並從佇列中刪除訊息時,訊息處理會失敗。當接收請求數目上限失敗時,Amazon SQS 可以將訊息旁邊傳送至無效字母佇列,因此資料不會遺失。

汽車零件價格管理範例使用案例中,公司可以為每個 Amazon SNS FIFO 主題訂閱指派 Amazon SQS 無效字母佇列 (DLQ),以及每個訂閱的 Amazon SQS 佇列。這可以保護公司免受任何價格更新損失。

設定 Amazon SQS 無效字母佇列,以確保訊息不會遺失。

Amazon SNS 訂閱相關聯的無效字母佇列必須是與訂閱佇列類型相同的 Amazon SQS 佇列。例如,Amazon SQS FIFO 佇列的 Amazon SNS FIFO 訂閱必須將 Amazon SQS FIFO 佇列作為無效字母佇列。同樣,Amazon SQS 標準佇列的 Amazon SNS FIFO 訂閱必須將 Amazon SQS 標準佇列作為其無效字母佇列。如需詳細資訊,請參閱 AWS 運算部落格上的 Amazon SNS 無效字母佇列 (DLQ)為 Amazon SNS、Amazon SQS、AWS Lambda 使用 DLQ 設計耐用的無伺服器應用程式文章。

為了延長耐久性以協助從下游失敗中復原,主題擁有者也可以使用 FIFO 主題來封存訊息長達 365 天。主題訂閱用戶接著就可以對訂閱的端點重播這些訊息,以復原因下游應用程式失敗而遺失的訊息,或複寫現有應用程式的狀態。如需更多資訊,請參閱 FIFO 主題的訊息封存與重播功能