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

為了進一步說明,我們假設您正在開發一項雲端原生應用程式,其可在線上商店收到下定的訂單時,將 Amazon SNS 訊息傳送至主題。訂閱該主題的 Amazon SQS 佇列,會各自收到新訂單的同則通知。

您在本教學中使用的 AWS 服務皆涵蓋在「AWS 免費方案」範圍內。

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

建立免費帳戶

「AWS 免費方案」包括適用於 Amazon Simple Notification Service 的 1,000,000 次發佈,以及適用於 Amazon Simple Queue Service 的 1,000,000 次請求。

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

 

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

tmt_send-fanout-event-notifications_1a

(按一下以縮放)

tmt_send-fanout-event-notifications_1a

a. 若顯示 SNS 主控台登陸頁面,請按一下 Get Started Now

tmt_send-fanout-event-notifications_1b

(按一下以縮放)

tmt_send-fanout-event-notifications_1b

在此步驟中,您會建立一個 Amazon SNS 主題。主題是一種傳送訊息和訂閱通知的通訊通道。在此範例中,當線上商店收到新下定的訂單時,範例電子商務應用程式即會將訊息推送至 Amazon SNS 主題。 


a. 在 Common Actions 下方,按一下 Create topic

tmt_send-fanout-event-notifications_2a

(按一下以縮放)

tmt_send-fanout-event-notifications_2a

b. 顯示 Create topic 對話方塊。在 Topic name 方塊中,輸入 New-Orders,然後按一下 Create topic

tmt_send-fanout-event-notifications_2b

(按一下以縮放)

tmt_send-fanout-event-notifications_2b

c. 顯示 Topic Details 頁面。

tmt_send-fanout-event-notifications_2c

(按一下以縮放)

tmt_send-fanout-event-notifications_2c

您已使用 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

tmt_send-fanout-event-notifications_4a

(按一下以縮放)

tmt_send-fanout-event-notifications_4a

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

您的 SNS 主題會顯示於清單中,這是因為該主題是從建立 Amazon SQS 佇列時所用的相同帳戶所建立。若是使用另一個帳戶建立 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 主控台,按一下 Topics

 

tmt_send-fanout-event-notifications_5a

(按一下以縮放)

tmt_send-fanout-event-notifications_5a

b. 選取 New-Orders 主題,然後按一下 Publish to topic 按鈕。


tmt_send-fanout-event-notifications_5b

(按一下以縮放)

tmt_send-fanout-event-notifications_5b

c. 顯示 Publish a Message 頁面。

Subject 方塊中,輸入 Order 123-4567890-1234567

Message format 中,選取 Raw

Message 欄位中,輸入下列文字以表示範例訂單:
1 x Widget @ 29.99 USD
2 x Widget Cables @ 4.99 USD

按一下 Publish Message。此時會顯示確認對話方塊。

tmt_send-fanout-event-notifications_5c

(按一下以縮放)

tmt_send-fanout-event-notifications_5c

發佈新訊息後,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 對話方塊。

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。為了完成確認,請按一下 Yes, Delete Checked Messages。然後按一下 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 主題。

按一下 Actions 下拉式清單,然後選取 Delete topics


tmt_send-fanout-event-notifications_7a

(按一下以縮放)

tmt_send-fanout-event-notifications_7a

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

 

tmt_send-fanout-event-notifications_7b

(按一下以縮放)

tmt_send-fanout-event-notifications_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. 已刪除佇列。

您現已可登出 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,以縮減和擴展應用程式。觀賞網路研討會 »