昆山网站制作,重庆网站seo诊断,dedecms确定网站风格,福鼎网站建设各位#xff0c;上一篇基本概念和架构中#xff0c;我们介绍了Window Azure ServiceBus的消息队列技术的概览。接下来#xff0c;我们进入编程模式和详细功能介绍模式#xff0c;一点一点把ServiceBus技术研究出来。
本章我们主要介绍ServiceBus的编程SDK编程入门。
首先…各位上一篇基本概念和架构中我们介绍了Window Azure ServiceBus的消息队列技术的概览。接下来我们进入编程模式和详细功能介绍模式一点一点把ServiceBus技术研究出来。
本章我们主要介绍ServiceBus的编程SDK编程入门。
首先微软提供了两个主要的Nuget Packages
Microsoft Azure Service Bus 3.4.0
主要的NameSpace有以下几个
1. Microsoft.ServiceBus这个下面有两个主要的类TokenProvider用于创建Azure ServiceBus连接TokenNamespaceManager管理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 keyMicrosoft.ServiceBus.ConnectionString valueEndpointsb://servicebustest.servicebus.chinacloudapi.cn/;SharedAccessKeyNameRootManageSharedAccessKey;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队列客户端/returnspublic 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主题客户端/returnspublic TopicClient GetTopicClient(string topicName){var namespaceClient NamespaceManager.Create(); return TopicClient.Create(topicName);} 5. 创建消息BrokeredMessage设置消息的属性 /// summary/// 构造消息/// /summary/// param nameserializableObject可序列化的对象/param/// returns消息/returnspublic 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 namereceivePayBills收发货订单集合/parampublic void Send(ListReceivePayBill receivePayBills){var queueClient GetQueueClient(queueName);foreach (var receivePayBill in receivePayBills){var message this.Create(receivePayBill);queueClient.Send(message);}queueClient.Close();} 7. 接收消息 /// summary/// 接收消息/// /summary/// returns收付款订单/returnspublic ListReceivePayBill Receive(){var bills new ListReceivePayBill(2);var queueClient GetReceiveQueueClient(queueName, ReceiveMode.ReceiveAndDelete);BrokeredMessage message;while ((message queueClient.Receive()) ! null){bills.Add(message.GetBodyReceivePayBill());}return bills;} 还有很多其他的示例代码。本文只是一个简单的入门级教程接下来我们将按MQ场景逐个展示ServiceBus Messaging的特性。