【转】Azure Messaging-ServiceBus Messaging消息队列技术系列2-编程SDK入门
各位,上一篇基本概念和架構中,我們介紹了Window Azure ServiceBus的消息隊列技術的概覽。接下來,我們進入編程模式和詳細功能介紹模式,一點一點把ServiceBus技術研究出來。
本章我們主要介紹ServiceBus的編程SDK編程入門。
首先,微軟提供了兩個主要的Nuget Packages:
Microsoft Azure Service Bus 3.4.0
主要的NameSpace有以下幾個:
1. Microsoft.ServiceBus,這個下面有兩個主要的類:TokenProvider(用于創建Azure ServiceBus連接Token)NamespaceManager(管理ServiceBus的命名空間)。
2. Microsoft.ServiceBus.Messaging,這個命名空間下面主要提供了:MessageSession、BrokeredMessage、QueueClient、TopicClient、TopicDescription、QueueDescription、SubscriptionClient、SubscriptionDescription等核心類。
在正式編碼之前,需要我們在Windows Azure的Portal上建立ServiceBus的NameSpace:
?
我們新建一個命名空間:servicebustest,選擇的類型是:消息
新建完成后處于活動(可用)的狀態:
接下來,我們要獲取兩個重要的配置:連接串和主秘鑰
請將連接字符串拷貝下來,備用。
請將主秘鑰拷貝下來,備用。
啟動我們的ServiceBus的連接編碼,首先需要在應用程序配置文件中增加ServiceBus的連接信息:
<appSettings><!-- Service Bus specific app setings for messaging connections --><add key="Microsoft.ServiceBus.ConnectionString" value="Endpoint=sb://servicebustest.servicebus.chinacloudapi.cn/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=主秘鑰"/></appSettings>后續,所有的ServiceBus的連接操作,都會讀取這個配置節。我們通過case by case的方式,show 給大家:
首先:ServiceBus的命名空間管理器:Microsoft.ServiceBus.NamespaceManager
這里,我們主要用以下兩個方法來實例化:
public static NamespaceManager Create(); 例如:
var namespaceClient = NamespaceManager.Create();通過NamespaceManager這個類,我們可以創建、刪除、獲取、重命名、更新、判斷是否存在:隊列、主題、訂閱、規則等
1. 消息隊列的創建、是否存在判斷、刪除操作
private void CreateQueue(string queueName, bool isRequiresSession = true){var nm = NamespaceManager.Create();if (nm.QueueExists(queueName)){nm.DeleteQueue(queueName);}var queue = new QueueDescription(queueName) { RequiresSession = isRequiresSession };nm.CreateQueue(queue);nm.DeleteQueue(queueName);}2. 創建QueueClient,用于發送、接收消息
/// <summary>/// 創建隊列客戶端/// </summary>/// <returns>隊列客戶端</returns>public QueueClient CreateQueueClient(string queueName, ReceiveMode mode = ReceiveMode.ReceiveAndDelete){var namespaceClient = NamespaceManager.Create();return QueueClient.Create(queueName,mode);}3. 主題的創建、刪除、是否存在判斷
private void CreateTopic(string topicName){var nm = NamespaceManager.Create();if (nm.TopicExists(topicName)){nm.DeleteTopic(topicName);}var topic = new TopicDescription(topicName);nm.CreateTopic(topic);nm.DeleteTopic(topicName);}4. 創建TopicClient,用于主題的發送和訂閱接收消息
/// <summary>/// 創建主題客戶端/// </summary>/// <returns>主題客戶端</returns>public TopicClient GetTopicClient(string topicName){var namespaceClient = NamespaceManager.Create(); return TopicClient.Create(topicName);}5. 創建消息BrokeredMessage,設置消息的屬性
/// <summary>/// 構造消息/// </summary>/// <param name="serializableObject">可序列化的對象</param>/// <returns>消息</returns>public static BrokeredMessage Create(Object serializableObject){ var serializer = new DataContractSerializer(serializableObject.GetType(),new DataContractSerializerSettings(){ IgnoreExtensionDataObject = true, PreserveObjectReferences = false});var message = new BrokeredMessage(serializableObject); message.Properties.Add("Type", serializableObject.GetType().ToString());return message;}6.發送消息
/// <summary>/// 發送多條消息/// </summary>/// <param name="receivePayBills">收發貨訂單集合</param>public void Send(List<ReceivePayBill> receivePayBills){var queueClient = GetQueueClient(queueName);foreach (var receivePayBill in receivePayBills){var message = this.Create(receivePayBill);queueClient.Send(message);}queueClient.Close();}7. 接收消息
/// <summary>/// 接收消息/// </summary>/// <returns>收付款訂單</returns>public List<ReceivePayBill> Receive(){var bills = new List<ReceivePayBill>(2);var queueClient = GetReceiveQueueClient(queueName, ReceiveMode.ReceiveAndDelete);BrokeredMessage message;while ((message = queueClient.Receive()) != null){bills.Add(message.GetBody<ReceivePayBill>());}return bills;}
還有很多其他的示例代碼。本文只是一個簡單的入門級教程,接下來我們將按MQ場景逐個展示ServiceBus Messaging的特性。
?
總結
以上是生活随笔為你收集整理的【转】Azure Messaging-ServiceBus Messaging消息队列技术系列2-编程SDK入门的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 北京新增30例本土感染者:天堂超市酒吧负
- 下一篇: 巴菲特最后一次慈善午餐拍卖火热:目前叫价