《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是一种通用的技术,可以用于各种各样的情景:

  1. 在一个多层(Multi-Tier) Azure应用程序的Web Role和Service Bus Worker Role之前的通信
  2. Azure公网应用程序和企业内网应用程序互相通信的混合云的解决方案
  3. 企业内网中不同组织或者部门的分布式应用程序之前的互相通信

  使用Service Bus Queue可以让你更好的扩展你的应用程序,并使架构更灵活。

  接下来,笔者将介绍使用Azure Management Portal和Visual Studio 2013来创建和使用Azure Service Bus Queue。

  本次Demo需要准备的前提条件:

  1. Windows Azure Global 账号 (www.windowsazure.com)
  2. Visual Studio 2013
  3. 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)入门的更多相关文章

  1. Windows Azure Service Bus (3) 队列(Queue) 使用VS2013开发Service Bus Queue

    <Windows Azure Platform 系列文章目录> 在之前的Azure Service Bus中,我们已经介绍了Service Bus 队列(Queue)的基本概念. 在本章中 ...

  2. Windows Azure Service Bus (4) Service Bus Queue和Storage Queue的区别

    <Windows Azure Platform 系列文章目录> 熟悉笔者文章的读者都了解,Azure提供两种不同方式的Queue消息队列: 1.Azure Storage Queue 具体 ...

  3. Windows Azure Service Bus Topics实现系统松散耦合

    前言 Windows Azure中的服务总线(Service Bus)提供了多种功能, 包括队列(Queue), 主题(Topic),中继(Relay),和通知中心(Notification Hub) ...

  4. Windows Azure Service Bus Notification Hub推送通知

    前言 随着Windows Azure 在中国的正式落地,相信越来越多的人会体验到Windows Azure带来的强大和便利.在上一篇文章中, 我们介绍了如何利用Windows Azure中的Servi ...

  5. Windows Azure Service Bus (5) 主题(Topic) 使用VS2013开发Service Bus Topic

    <Windows Azure Platform 系列文章目录> 项目文件,请在这里下载 在笔者之前的文章中Windows Azure Service Bus (1) 基础 介绍了Servi ...

  6. Azure Service Bus(一)入门简介

    一,引言 今天开始学习新的内容 Azure Service Bus(服务总线),其实也叫 "云消息服务",和 RabbitMQ,KafKa的一样都是作为消息通信服务,但是它们直接还 ...

  7. Windows Azure Service Bus (6) 中继(Relay On) 使用VS2013开发Service Bus Relay On

    <Windows Azure Platform 系列文章目录> 注意:本文介绍的是国内由世纪互联运维的Windows Azure服务. 项目文件请在这里下载. 我们在使用Azure平台的时 ...

  8. Windows Azure Service Bus (1) 基础

    <Windows Azure Platform 系列文章目录> 我们在基于Windows Azure进行云端开发的时候,云端的软件通常都需要与其他软件进行交互.这些其他软件可能包括其他In ...

  9. Windows Azure Service Bus 推动财务服务门户的高可用性和可伸缩性

    抵押贷款公司和评估管理公司面临着快速.复杂且数据量极大的业务流程.他们需要可快速.轻松设置且容量几乎无限的可伸缩的企业级服务,来对处理评估订单以及自动化流程本身所产生的所有文档和数据进行管理. 这听起 ...

随机推荐

  1. 通过cookie实现搜索框内容保存关闭浏览器之前的操作、jq js实现方法

    jq实现的方法: jq需要在页面中引入JQ.cookie插件 这是一个超轻量级插件 要实现的效果: 下面是jq代码: $(function(){ var til=$("#orderInfoC ...

  2. 【视频教程】使用UIAutomation开发软件外挂

    UIAutomation是.Net 3.5之后提供的“界面自动化测试”技术,本来是给测试人员用的,不过UIAutomation由于也是界面自动操作的技术,比直接使用keybd_event.GetWin ...

  3. DataTables 控件使用和心得 (2) - 参数Options

    什么是DataTables参数(Options) 上篇我们说了,DataTables控件的加载函数dataTable()一般都有一个对象参数,这个对象参数就是整个DataTables控件的参数(Opt ...

  4. Java多线程2:Thread中的实例方法

    Thread类中的方法调用方式: 学习Thread类中的方法是学习多线程的第一步.在学习多线程之前特别提出一点,调用Thread中的方法的时候,在线程类中,有两种方式,一定要理解这两种方式的区别: 1 ...

  5. Nginx + CGI/FastCGI + C/Cpp

    接着上篇<Nginx安装与使用>,本篇介绍CGI/FASTCGI的原理.及如何使用C/C++编写简单的CGI/FastCGI,最后将CGI/FASTCGI部署到nginx.内容大纲如下: ...

  6. [蓝牙] 5、Battery Service module

    Detailed Description This module implements the Battery Service with the Battery Level characteristi ...

  7. [ACM_动态规划] 数字三角形(数塔)_递推_记忆化搜索

    1.直接用递归函数计算状态转移方程,效率十分低下,可以考虑用递推方法,其实就是“正着推导,逆着计算” #include<iostream> #include<algorithm> ...

  8. python:how does subclass call baseclass's __init__()

    First, use baseclass's name to call __init__() I wrote code like this: and we can use 'super' too.

  9. 使用EntityFramework的烦恼

    我有一个应用程序,是实现数据ETL同步的,即把数据从一个db里抽取出来,经过处理后,存储到另一个db里. O/RM采用的是EF db First. 随着项目程序的开发,EF的不足越来越明显. ● 根据 ...

  10. 谈谈设计模式~原型模式(Prototype)

    返回目录 原型模式是创建型模式的一种,其特点在于通过“复制”一个已经存在的实例来返回新的实例(clone),而不是新建(new)实例.被复制的实例就是我们所称的“原型”,这个原型是可定制的. 原型模式 ...