本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
Amazon SNS
Amazon SNS 可讓您建立標準和 FIFO 主題。主題用於實作發佈/訂閱 (pub/sub) 架構。Amazon SNS 支援各種訂閱類型,包括電子郵件、SMS (假設您已設定起始身分,例如免付費電話號碼或 10 位數長碼)、HTTP(S) 端點和 SQS 佇列。訂閱者必須確認 SNS 主題的最終使用者訂閱,例如電子郵件訊息和簡訊。Amazon SNS 可讓服務廣泛散發,這表示單一訊息可以傳遞給可能大量的訂閱者。SNS 標準主題的預設限制為 1,250 萬個訂閱。
在微服務環境中,SNS 主題適用於從發佈者解耦訊息路由和交付邏輯。這可以透過使用主題篩選條件來實作。概念上,主題篩選條件與 Amazon EventBridge 規則略有相似,但它們是為每個訂閱者設定的,而不是從集中位置提供。例如,假設您有:
-
Order 服務,可處理訂單。
-
履行服務,可處理訂單履行。
-
忠誠度服務,可授予會員訂單的忠誠度點數。
當訂單已準備好履行時,它會發佈訊息到主題。Fulfillment 服務會訂閱主題,但不會套用篩選條件,因為它想要了解所有訂單。假設您有一個忠誠度服務,該服務負責在成員下訂單時將點數授予他們。不過,並非所有訂單都是由成員下單。忠誠度服務會訂閱主題,但會實作訂閱篩選條件來檢查屬性,指出訂單是針對成員還是訪客。
假設系統收到最終使用者的付款請求,如下圖所示。在這種情況下,多個下游系統需要知道已提出請求,才能採取各種動作。當您使用 Amazon SNS 時,付款會發佈至 SNS 主題,而 Lambda 函數會訂閱主題以更新客戶和銷售資料庫。此外,電子郵件訂閱 (必須由客戶確認) 會使用訂閱篩選條件傳送電子郵件確認給客戶。
指引
本節中針對 Amazon SNS 所述的部分功能與事件匯流排所提供的功能重疊,例如 EventBridge。考慮在以下情況下使用 Amazon SNS:
-
您將有大量訂閱者加入主題。
-
您想要使用 EventBridge 原生不支援的訂閱類型 (例如電子郵件或簡訊)。
-
訂閱者應該能夠判斷其訂閱篩選條件。
-
您需要按順序交付給訂閱者 (每個訊息群組)。
如果您有許多主題,而且訂閱和篩選條件用於在微服務之間路由訊息,則 EventBridge 可能是更好的選擇。