各位,上一篇基本概念和架构中,我们介绍了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入门相关推荐

  1. 消息队列技术的介绍和原理(MQ)

    最近要做一个项目准备用分布式消息队列, 花点时间看了下. 消息队列技术是分布式应用间交换信息的一种技术.消息队列可驻留在内存或磁盘上,队列存储消息直到它们被应用程序读走.通过消息队列,应用程序可独立地 ...

  2. 消息队列 策略_消息队列技术点梳理(思维导图版)

    消息队列作为服务/应用之间的通信中间件,可以起到业务耦合.广播消息.保证最终一致性以及错峰流控(克服短板瓶颈)等作用.本文不打算详细深入讲解消息队列,而是体系化的梳理消息队列可能涉及的技术点,起到提纲 ...

  3. 消息队列技术介绍 : ActiveMQ、RabbitMQ、ZeroMQ、Kafka、MetaMQ、RocketMQ

    一. 消息队列概述 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 消息队列中间件是分布式系统中重要的组件,主要解决应用耦合.异步消息.流量削锋等问 ...

  4. tp5 mysql实现消息队列_TP5系列 | Queue消息队列

    消费信息如下ThinkPHP5 Queue消息队列 优点 1.Queue内置了 Redis,Database,Topthink ,Sync这四种驱动,本文使用Redis驱动 2.Queue消息队列适用 ...

  5. 拿走不谢:一份历经线上考验的大规模系统的消息队列技术方案!

    作者|中华石杉 责编|伍杏玲 本文经授权转载自石杉的架构笔记 在之前的文章中,我们分析了如何利用消息中间件对两系统进行解耦处理. 同时我们也提到了,使用消息中间件还有利于一份数据被多个系统同时订阅,供 ...

  6. K线技术分析与编程实践入门

    这本书重点突出,思想新颖,实用性强.内容清晰.易懂.详实.它注重股票技术分析理论与实践的结合,突出基本性.系统性.实用性和先进性.本书内容具有跨学科的特点,不仅适合广大投资者,也可作为相关机构经济学和 ...

  7. android消息队列模型,Android 消息队列机制

    在非UI线程使用Handler进行线程通信时,一般都需要进行3个步骤: 创建Looper Looper.prepar() 创建Handler 启动消息循环Looper.loop() 通过这3步,基本就 ...

  8. Azure IoT Hub和Event Hub相关的技术系列-索引篇

    Azure IoT Hub和Event Hub相关的技术系列,最近已经整理了不少了,统一做一个索引链接,置顶. Azure IoT 技术研究系列1-入门篇 Azure IoT 技术研究系列2-设备注册 ...

  9. C# 消息队列之MSMQ

    首先说一下,消息队列 (MSMQ Microsoft Message Queuing)是MS提供的服务,也就是Windows操作系统的功能,并不是.Net提供的. 消息队列(MSMQ)技术使得运行于不 ...

最新文章

  1. AI洞观 | 一文读懂英特尔的AI之路
  2. Java 深、浅克隆
  3. python编译过程和解释过程的不同_Python编译/解释过程
  4. 融合libevent和protobuf
  5. Android开发之git提交代码到GitHub仓库教程
  6. 70后存款100万,有房有车无贷款,每月租金1.5万,可以退休吗?
  7. 组装电脑教程(转载)
  8. mybatis下log4j使用
  9. footer置底的几种方式
  10. Redis的超时命令和垃圾回收策略
  11. CSS reset的重新审视 – 避免样式重置
  12. 利用Python爬虫采集mac电脑皮肤
  13. origin2016中怎么画多条曲线,并且分别给不同曲线设置标记
  14. mysql bit php,Bit Web Server (PHP,MySQL,PMA) 安卓WEB服务器
  15. 北航院系和数字的对应关系
  16. 理解js的prototype原型对象
  17. nullnullUVa 10066 - The Twin Towers(LCS水题)
  18. django -- url 的 命名空间
  19. 基于Web的仓库管理系统的设计与实现
  20. Python学习第一天

热门文章

  1. 【C语言进阶深度学习记录】三 浮点数(float) 在内存中的表示方法
  2. python基础:python循环、三元运算、字典、文件操作
  3. 2018.09.15 vijos1053Easy sssp(最短路)
  4. Django model 字段类型及选项解析(一)
  5. 干货-iOS、mac开源项目及库,以后我也会持续更新。
  6. 【大数据】Hadoop入门预告版
  7. 响应性web设计实战总结(二)
  8. uva11361数位dp
  9. 基于visual Studio2013解决面试题之0902内存拷贝
  10. [Bugku][Web][CTF] 30-33 write up