在本教學中,您將學習如何使用 Amazon Simple Notification Service (SNS) 的訊息篩選功能。訊息篩選功能可讓訂閱 SNS 主題的端點僅接收感興趣的主題訊息的子集。
在我們的範例中,使用者造訪網站以提出保險報價請求。這些報價請求可以用於汽車保險、船舶保險或人壽保險。發出保險報價請求後,該請求將轉發到一系列後端系統。一個是處理汽車和船舶車輛保險的銷售系統,另一個是處理人壽保險的銷售系統,以及一個需要處理所有報價請求的分析系統。
正如我們在傳送散發事件通知教學中所了解的那樣,我們將使用散發訊息傳遞模式,透過 SNS 和 SQS 將網站與後端系統分離。為了將事件通知傳送至正確的後端系統,您可以針對每種類型的報價請求建立一個單獨的主題,然後將訊息路由邏輯新增至您的發佈者。但是,此選項可能導致發佈者過於復雜、主題激增,以及佈建和管理 SNS 主題的額外開銷。SNS 訊息篩選要簡單得多!
在本教學中,您將使用 Amazon SNS 和 Amazon Simple Queue Service (SQS)。兩種服務都納入 AWS 免費方案。
在 AWS 上篩選訊息需要一個帳戶
建立免費帳戶AWS 免費方案包含 1,000,000 次的 Amazon Simple Notification Service 發布,和 1,000,000 個 Amazon Simple Queue Service 請求。
您的第一步將是建立一個 Amazon SNS 主題,以便在保險網站上提出報價請求時發佈訊息。這些潛在客戶可能與汽車保險、船舶保險或人壽保險有關。
a.按一下這裡,即可在新瀏覽器視窗開啟 AWS 管理主控台,讓此逐步指南保持開啟狀態。當畫面載入時,請輸入您的使用者名稱和密碼以開始使用。接著,在搜尋列輸入 notification,選取 Simple Notification Service 以開啟服務主控台。
每個保險銷售系統都會從其訂閱 SNS 主題的對應 SQS 訊息佇列中輪詢報價請求。
第一個佇列會處理汽車和船舶保險報價請求;第二個佇列會處理人壽保險的;第三個佇列會擷取全部請求。第三個佇列會擷取所有報價請求,無論保險類型為何,以便為分析系統提供資料。這些偏好設定會設定為 SNS 訂閱上的篩選政策。
在此步驟中,您會建立三個佇列,且每個佇列都會訂閱 SNS 主題。
a.按一下這裡,在新的瀏覽器視窗開啟 Amazon SQS 主控台。若顯示 SQS 登陸頁面,請按一下 Get Started Now (立即開始)。否則請繼續進行下一步。
您現已建立三個 Amazon SQS 佇列,您需要為這些佇列訂閱 Amazon SNS 主題,以廣播新的保險報價請求。
b. 顯示訂閱主題對話方塊。在選擇主題下拉式清單中,選取保險報價請求主題,您要為三個佇列訂閱該主題。因為您是從同一帳戶建立的 SNS 主題,所以它會顯示在清單中。
若使用另一個帳戶建立 SNS 主題,可使用主題 ARN 欄位訂閱該主題。如需更多詳細資訊,請參閱 Amazon SNS 文件或我們的部落格 與 SNS 的跨帳戶整合。
現在已經建立了所有 SNS 和 SQS 資源,您可以為 SNS 訂閱設定篩選政策。篩選政策是簡單的 JSON 文件,設定為 SNS 訂閱的屬性,其定義訂閱者感興趣的通知類型。
若沒有篩選政策,訂閱會接收所有發佈至 SNS 主題的訊息,這樣您就無需為全部報價佇列設定篩選政策。
我們來測試一下! 在此步驟中,透過將訊息發佈到主題,您將能夠模擬來自潛在客戶產生網站的新保險報價請求。
您將發佈具有不同屬性的訊息,因此您可以檢視實際使用的 Amazon SNS 的訊息篩選機制。
現在,您可以檢查發生的郵件傳遞,來驗證每種類型的保險報價請求是否已路由至其相應的 SQS 郵件佇列。
您會看到,僅當訂閱的 Amazon SQS 佇列的相應 SNS 訂閱具有與該傳入訊息屬性相符的篩選政策時,該佇列才得收到該訊息。
您還會注意到,特別是一個佇列實際上收到了發佈到該主題的所有訊息。之所以發生這種情況,是因為此訂閱沒有設定篩選政策,這會導致全部擷取行為。
在此步驟中,您會刪除針對此教學所建立的資源,其包括主題、訂閱和佇列。刪除不再使用的資源是一項最佳實務,如此您就不需要繼續為其付費。
您現在可以使用 Amazon Simple Notification Service (SNS) 上的訊息篩選功能,建立更簡單流暢的發佈/訂閱架構。
訊息篩選功能讓 Amazon SNS 主題的訂閱者只會接收到他們感興趣的一小部分訊息,而不會接收到發佈至某個主題的所有訊息。這會免去對訂閱者執行訊息篩選功能的複雜設計,也無需發佈系統中的訊息路由邏輯。
您現已學會如何使用 Amazon Simple Notification Service 來實作訊息篩選,請選擇下列其中一個選項深入探究關於 AWS 雲端簡訊的資訊。