標籤:des blog http io os 使用 ar strong for
《Windows Azure Platform 系列文章目錄》
Service Bus 隊列(Queue)
Service Bus的Queue非常適合分布式應用。當使用Service Bus Queue的時候,分布式應用的組件不直接進行通訊。
- 前端應用(發送方)建立一個Azure Service Bus Queue,插入需要處理的訊息主體,然後繼續處理前端商務邏輯
- 後端訊息處理(接收方)從Service Bus Queue中取出訊息,並進行處理
- 發送方不需要等待接收方的回覆,以便在前端處理和發送更多的訊息
- Azure Service Bus Queue是First In First Out的,最先添加的訊息主體,最先被處理。並且Service Bus Queue是會被多個接收方處理的,類似於競爭模式。但是同一時刻,一條訊息主體只會被一個接收方處理,保證不會被多個接收方重複處理。
這就好比是筆者進餐館吃飯,服務員(代表筆者作為發送方)協助筆者點菜,廚師(代表接收方)在廚房燒菜。假設這家餐館有ABC三個廚師,筆者點的菜就會被ABC三個廚師進行競爭處理,最先點的菜最先被處理(FIFO),且同一個菜只會由一個廚師製作,不會被兩個或者多個廚師同時製作。
Service Bus Queue 架構圖:
Service Bus Queue是一種通用的技術,可以用於各種各樣的情景:
- 在一個多層(Multi-Tier) Azure應用程式的Web Role和Service Bus Worker Role之前的通訊
- Azure公網應用程式和企業內網應用程式互相通訊的混合雲的解決方案
- 企業內網中不同組織或者部門的分布式應用程式之前的互相通訊
使用Service Bus Queue可以讓你更好的擴充你的應用程式,並使架構更靈活。
接下來,筆者將介紹使用Azure Management Portal和Visual Studio 2013來建立和使用Azure Service Bus Queue。
本次Demo需要準備的前提條件:
- Windows Azure Global 帳號 (www.windowsazure.com)
- Visual Studio 2013
- Windows Azure SDK (筆者使用的是.NET SDK For VS2013)
1.首先我們需要登陸Azure Management Portal (http://manage.windowsazure.com)
2.點擊New -> App Service -> Service Bus ->Queue -> Custom Create。設定Service Bus的名稱和命名空間。如:
然後配置Azure Service Bus,如:
中,可以按照需要設定Azure Service Bus Queue的Max Size等資訊,筆者暫時使用預設設定。
3.建立完畢後,我們可以通過顯示欄的Connection Information來查看Service Bus的存取金鑰,如:
密鑰顯示如下:
以上完成了Service Bus NameSpace的設定。
4.然後我們以管理員身份開啟VS2013。點擊工具列的View -> Server Explorer。
在Server Explorer中,展開Windows Azure -> Service Bus,然後右鍵,點擊Add New Connection
在中,勾選Use connection string,然後複製我們在步驟三中的存取金鑰連接字串:
5.設定完畢後,我們展開Service Bus -> leizhangservicebus-ns -> Queues,然後點擊Queue,右鍵,Create New Queue。如:
在彈出的視窗中,設定Name為LeiZhangServiceBusQueue。
然後展開Queues的內容,可以查看到我們建立成功的Azure Service Bus Queue。
階段性總結:
步驟1-3,實現了建立Azure Service Bus Namespace的工作
步驟4-5,實現了建立Azure Service Bus Queue的工作
接下來,我們要測試通過Visual Studio 2013,向Service Bus Queue,發送和接受訊息。
1.我們點擊中建立成功的Service Bus Queue,點擊右鍵Send a test message,進行發送訊息的測試,如:
2.會快顯視窗,證明發送測試訊息成功。如:
3.重複步驟1的Send a test message三次。
4.回到Azure Management Portal,點擊leizhangservicebus-ns,可以查看到Queue Length為3,是因為在步驟3中,我們Send a test message執行了三次。如:
5.接下來,我們執行接收訊息的步驟。我們右鍵點擊"Receive Message"
6.點擊Receive Message之後,會顯示接受訊息的結果。
可以看到,下周中Id為1,即第一條訊息。說明了Service Bus Queue是First-In-First-Out的,且Label的時間4:32:36 PM和步驟2的時間一致,也說明了是接受到了第一條訊息。如:
7.重複步驟5的Receive Message,直至將所有的Azure Service Bus Message取出。
8.然後我們回到Azure Management Portal,可以看到Queue Length又變成0了,因為筆者通過VS2013將Service Bus Queue的訊息都Receive了。如:
Windows Azure Service Bus (2) 隊列(Queue)入門