1. 前言
在閱讀本文之前,可以查看微軟官方的說明。
https://www.azure.cn/documentation/articles/service-bus-create-queues/
2. 介紹
1) service bus的隊列,若當前消息被成功處理后,則這個消息會從隊列中消失。
2) service bus是先進先出的隊列,當取隊列時,一直停留做等待,直到有消息進入。
3) Windows Azure Service Bus 提供安全且廣泛可用的托管基礎結構,以實現廣泛通信、大范圍事件分布、命名和服務發布。Service Bus 為 Windows Communication Foundation (WCF) 和其他服務終結點(包括 REST 終結點)提供連接選項,沒有這些連接選項將很難或不可能訪問這些終結點。可以將終結點置於網絡地址轉換 (NAT) 邊界的后面並/或綁定到經常更改的、動態分配的 IP 地址。
4)Service Bus 提供“中繼”和“中轉”消息傳遞功能。在中繼消息傳遞模式下,中繼服務支持直接單向消息傳遞、請求/響應消息傳遞和對等消息傳遞。中轉消息傳遞提供了持久異步消息傳遞組件(如隊列、主題和訂閱),具有支持發布-訂閱和臨時分離的功能:發送者和接收者不必同時處於聯機狀態;該消息傳遞基礎結構能夠可靠地存儲消息,直到接收方准備好接收消息。
3. 開始創建
1)登錄到Azure https://manage.windowsazure.cn/
2)打開服務總線
3)新建消息隊列
在左下角—>新建 —> 服務總線—>隊列—>自定義創建
我們輸入隊列名稱與命名空間名稱如下:隊列名稱:myqueue;命名空間名稱:testnamespace
點擊下一步,如下。用默認的值,你也可以用自己自定義的值
這時候,我們等待創建,命名空間與隊列都創建成功,如下:
4)設置隊列
我們依次進入 命名空間—>隊列—>myqueue—>配置,填寫名稱與權限。用來配置隊列連接屬性與連接字符串
我們填寫名稱alun,有管理、發送、偵聽的權限。
5)查看連接信息
打開命名空間testnamespace—>隊列,選中myqueue,然后查看連接信息
可以看到連接字符串
到此,創建隊列結束
4. 代碼開始
1)首先,創建一個項目,這里我們創建一個控制台項目 ConsoleApplicationServiceBus
2)導入相應的包
Install-Package WindowsAzure.ServiceBus
3)連接servicebus
如果代碼中不對 ConnectivityMode 做預先設置,service bus 客戶端( web 應用)默認使用了 AutoDetect 模式 連接 service bus 服務。 AutoDetect 會優先使用 TCP 連接模式。由於 TCP 連接模式也是加密的,所以客戶端需要首先驗證 service bus 服務器證書 CN = servicebus.chinacloudapi.cn 的有效性,證書鏈信息在 SSL 協議的 server hello 消息中返回。
如果證書鏈中的某些中間證書沒有安裝在 web 應用實例上,web 應用需要發起額外的請求到 CA 服務器上下載中間證書並安裝。
//最好設置連接模式為Https,默認是Tcp。如果是Tcp的話,放到雲端WEB應用上會報錯 ServiceBusEnvironment.SystemConnectivity.Mode = ConnectivityMode.Https; //開始連接 QueueClient Client = QueueClient.CreateFromConnectionString(connStr, queueName);
取得消息
public MessageData GetMessage() { var vMsg = Client.Receive(); if (vMsg == null) { return null; } messageData = vMsg.GetBody<MessageData>(); vMsg.Complete(); return messageData; }
添加消息
public void AddMessage(MessageData msg) { var vmsg = new BrokeredMessage(msg); Client.Send(vmsg); } }
下面是我們自定義的 MessageData類
[DataContract] public class MessageData { [DataMember] public string Content { get; set; } [DataMember] public string id { get; set; } }