在這個教學中,您將使用 Amazon Simple Notification Service (SNS)Amazon Simple Queue Service (SQS) 實作散發簡訊案例。在這個案例中,訊息會「推送」到多個訂閱者,如此即無須定期檢查或輪詢更新,而且可依訂閱者平行非同步處理訊息。

為了進一步說明,我們假設您正在開發雲端原生應用程式,每當客戶在線上商店下單時,該應用程式可將 Amazon SNS 訊息傳送至主題。訂閱至該主題的 Amazon SQS 佇列,每個佇列都可收到一樣的新訂單通知。

您在本教學中使用的 AWS 服務都包含在 AWS 免費方案中。

在 AWS 上傳送散發事件通知必須具有帳戶

建立免費帳戶

AWS 免費方案包含 1,000,000 次的 Amazon Simple Notification Service 發布,和 1,000,000 個 Amazon Simple Queue Service 請求。

查看 AWS 免費方案詳細資訊 »

 

按一下這裡,即可在新瀏覽器視窗開啟 AWS 管理主控台,讓此逐步指南保持開啟狀態。當畫面載入時,請輸入您的使用者名稱和密碼以開始使用。接著,在搜尋列輸入 notification,選取 Simple Notification Service 以開啟服務主控台。

tmt_send-fanout-event-notifications_1a

(按一下以縮放)

tmt_send-fanout-event-notifications_1a

a. 若顯示 SNS 主控台登陸頁面,請按一下 Next step (下一步)

1a-sns-console-home

(按一下以縮放)

1a-sns-console-home

在這個步驟中,您將建立 Amazon SNS 主題。主題是傳送訊息和訂閱通知的通訊管道。在這個範例中,每當客戶在線上商店下新的訂單時,範例電子商務應用程式就會將訊息推送到 Amazon SNS 主題。 


a.  在 Create topic (建立主題) 頁面中,於主題名稱方塊輸入 New-Orders,然後按一下 Create topic (建立主題)

2a-topic-create-wf

(按一下以縮放)

2a-topic-create-wf

b. Topic details (主題詳細資訊) 頁面會確認主題已成功建立。

2b-topic-create-confirm

(按一下以縮放)

2b-topic-create-confirm

您已使用 Amazon SNS 建立主題,現在要建立能夠訂閱至該主題的 Amazon SQS 佇列。

若您為多個佇列訂閱主題,則每當訊息推送至主題時,這些佇列會各自收到相同的通知。接著,連接至這些佇列的服務會以平行非同步方式來處理訂單。

例如,連接至其中一個佇列的 Amazon EC2 伺服器執行個體會負責訂單的處理或履行作業,而其他伺服器執行個體則會連接至資料倉儲以分析所有收到的訂單。

為了讓整個流程簡易化,我們在本教學中不會將 EC2 執行個體實際連接至佇列。


a.按一下這裡,在新的瀏覽器視窗開啟 Amazon SQS 主控台。若顯示 SQS 登陸頁面,請按一下 Get Started Now (立即開始)。否則請繼續進行下一步。

 

tmt_send-fanout-event-notifications_3a

(按一下以縮放)

tmt_send-fanout-event-notifications_3a

b.第一個佇列會存放虛構的 Inventory Service,其會持續追蹤產品,並視需要從每筆訂單的庫存中新增和刪除這些產品。 

Create New Queue (建立新佇列) 頁面的 Queue Name (佇列名稱) 欄位輸入 Orders-for-Inventory。讓 Standard Queue (標準佇列) 保持選取狀態,然後按一下 Quick-Create Queue (快速建立佇列)

tmt_send-fanout-event-notifications_3b

(按一下以縮放)

tmt_send-fanout-event-notifications_3b

c.您已在佇列清單中建立並選取新的佇列。接著,您將建立第二個佇列來處理訂單分析。

按一下 Create New Queue (建立新佇列),以建立另一個佇列存放訂單供 Analytics Service 使用。

tmt_send-fanout-event-notifications_3c

(按一下以縮放)

tmt_send-fanout-event-notifications_3c

d.在 Queue Name (佇列名稱) 欄位輸入 Orders-for-Analytics,然後按一下 Quick-Create Queue (快速建立佇列)。 

tmt_send-fanout-event-notifications_3d

(按一下以縮放)

tmt_send-fanout-event-notifications_3d

e.新的佇列現在已顯示在佇列清單中。

tmt_send-fanout-event-notifications_3e

(按一下以縮放)

tmt_send-fanout-event-notifications_3e

您現已建立兩個 Amazon SQS 佇列,您必須為這些佇列訂閱 Amazon SNS 主題以廣播新訂單通知。


a.從佇列清單中,選取 Orders-for-InventoryOrders-for-Analytics 佇列。從 Queue Actions (佇列動作) 選取 Subscribe Queues to SNS Topic (將佇列訂閱至 SNS 主題)

tmt_send-fanout-event-notifications_4a

(按一下以縮放)

tmt_send-fanout-event-notifications_4a

b.此時會顯示 Subscribe to a Topic (訂閱至主題) 對話方塊。從 Choose a Topic (選擇主題) 下拉式清單,選取 New-Orders Amazon SNS 主題。

由於您使用與建立 Amazon SQS 佇列一樣的帳戶建立 SNS 主題,因此該主題會顯示在清單中。如果使用另一個帳戶建立 SNS 主題,可使用 Topic ARN 訂閱該主題。如需詳細資訊,請參閱 Amazon SNS 文件

Topic Region (主題區域) 保持不變,然後按一下 Subscribe (訂閱)。 

tmt_send-fanout-event-notifications_4b

(按一下以縮放)

tmt_send-fanout-event-notifications_4b

c.此時會顯示 Topic Subscription Result (主題訂閱結果) 對話方塊。按一下 OK (確定)

tmt_send-fanout-event-notifications_4c

(按一下以縮放)

tmt_send-fanout-event-notifications_4c

您的佇列現在已訂閱至主題。您在此步驟中,會使用虛擬電子商務應用程式將訊息推送至具有訂單詳情的主題,以模擬新訂單。


a. 在 Amazon SNS 主控台 New Orders (新訂單) 主題詳細資訊頁面,按一下 Publish message (發布訊息)

 

5a-topic-create-confirm

(按一下以縮放)

5a-topic-create-confirm

b. 此時會顯示 Publish Message to topic (將訊息發布到主題) 頁面。在 Subject (主旨) 方塊中輸入 Order 123-4567890-1234567。在 Message (訊息) 欄位輸入以下文字,以作為範例訂單:

1 x Widget @ $29.99 USD

2 x Widget Cables @ $4.99

按一下 Publish Message (發布訊息)。此時會顯示確認對話方塊。

 

5b-sns-send-message-wf

(按一下以縮放)

5b-sns-send-message-wf

發布新訊息之後,Amazon SNS 會將該訊息交付到訂閱該主題的每個端點。在與此相似的散發案例中,Amazon SQS 佇列就是端點。

在這個步驟中,您可以透過查看主題傳送到佇列的訊息,確認佇列收到新訂單通知。


a.在 Amazon SQS 主控台中,於佇列清單勾選 Orders-for-Inventory 佇列方塊。從 Queue Action (佇列動作) 下拉式清單中,選取 View/Delete Messages (檢視/刪除訊息)

 

tmt_send-fanout-event-notifications_6a

(按一下以縮放)

tmt_send-fanout-event-notifications_6a

b.按一下 Start Polling for Messages (開始輪詢訊息)


tmt_send-fanout-event-notifications_6b

(按一下以縮放)

tmt_send-fanout-event-notifications_6b

c.此時會顯示 View/Delete Messages in Orders-for-Inventory (在 Orders-for-Inventory 檢視/刪除訊息) 對話方塊。

tmt_send-fanout-event-notifications_6c

(按一下以縮放)

tmt_send-fanout-event-notifications_6c

d.在 Body (內文) 欄中,按一下 More Details (更多詳細資訊)。在此 Message Details (訊息詳細資訊) 方塊內含的 JSON 文件中,包含發佈至主題的主旨和訊息。 

您已確認 Orders-for-Inventory 佇列收到來自 New-Orders 主題的新訂單通知。 

按一下 Close (關閉)

 

tmt_send-fanout-event-notifications_6d

(按一下以縮放)

tmt_send-fanout-event-notifications_6d

e.我們會假設虛擬 Inventory Service 已完成此訊息的處理作業,且現在已可安全地從佇列刪除訊息。 

按一下 Delete 1 Message (刪除 1 則訊息)。為了完成確認,請按一下 Yes, Delete Checked (是,刪除選取的訊息)。然後按一下 Close (關閉)

 

tmt_send-fanout-event-notifications_6e

(按一下以縮放)

tmt_send-fanout-event-notifications_6e

f.重複執行步驟 6a 至 6e,確認 Orders-for-Analytics 佇列亦已收到新訂單的通知。

tmt_send-fanout-event-notifications_6f

(按一下以縮放)

tmt_send-fanout-event-notifications_6f

在此步驟中,您會刪除針對此教學所建立的資源,其包括「主題訂閱」、「主題」和「佇列」。刪除不再使用的資源是一項最佳實務,如此您就不需要繼續為其付費。


a. 開啟 Amazon SNS 主控台,然後在左側導覽窗格中按一下 Topics (主題)

選取 New-Orders 主題。

按一下 Delete (刪除) 刪除主題。

 

7a

(按一下以縮放)

7a

b. 此時會顯示 Delete (刪除) 確認對話方塊。在對話方塊輸入 delete me,然後按一下 Delete (刪除)。系統會刪除主題及其訂閱。您現已可關閉 SNS 瀏覽器視窗 (但不要登出,因為您仍然需要在 SQS 主控台刪除佇列)。

7b

(按一下以縮放)

7b

c.在 Amazon SQS 主控台中,選取 Orders-for-InventoryOrders-for-Analytics 佇列。從 Queue Actions (佇列動作) 選取 Delete Queues (刪除佇列)


tmt_send-fanout-event-notifications_7c

(按一下以縮放)

tmt_send-fanout-event-notifications_7c

d.此時會顯示 Delete Queues (刪除佇列) 對話方塊。按一下 Yes, Delete 2 Queues (是,刪除 2 個佇列)。 已刪除佇列。

您現已可登出 Amazon SQS 主控台。

tmt_send-fanout-event-notifications_7d

(按一下以縮放)

tmt_send-fanout-event-notifications_7d

您已使用 Amazon SNS 和 Amazon SQS 實作散發案例。您現在可以使用 Amazon SNS 搭配 Amazon SQS,將訊息交付至需要即時事件通知的應用程式,或是針對想要稍後處理的其他應用程式,緩衝處理 Amazon SQS 佇列中的訊息。

 


您現已學會如何使用 Amazon Simple Notification Service 和 Amazon Simple Queue Service 來實作訊息散發通知,請選擇下列其中一個選項深入探究關於 AWS 雲端簡訊的資訊。

進一步了解

了解適用於 Amazon Web Services (AWS) 訊息主題的功能、元件和使用案例概觀。瀏覽 Amazon SNS 網頁 »

深入探究

探索如何讓應用程式、最終使用者和裝置從雲端立即傳送和接收通知。閱讀文件 »

查看運作情形

聆聽諸如 Capital One 等客戶如何使用 Amazon SQS 和 Amazon SNS 分離和和擴展應用程式。觀賞網路研討會 »