Windows Azure AppFabric 入门教学系列 (六):Message Buffer之初体验

本文是Windows Azure AppFabric入门教学的第六篇文章。本文会介绍一下Service Bus中一个非常有用的特性-MessageBuffer。该特性类似于Queue Storage,作为一种小型的,临时的信息缓冲区,能够应用于多种场景。本例中,我们会简单的模拟一下订单系统:下单,查看订单,处理订单。

前置条件

为了使后续的教程能够顺利进行,请确保如下软件或组件已被安装:

·       Microsoft .NET Framework 3.5 SP1

·       Microsoft Visual Studio 2008 SP1 (or above)

·        8">AppFabric SDK

·       Windows Azure Platform Training Kit - December Update(示例代码)

请确保您已拥有一定的WCF编程经验,若没有,请浏览这里以快速的初步了解WCF。

最后请确保已创建了一个AppFabric项目和一个服务命名空间。请参考这里 。

代码:

1.          从Windows Azure Platform Training Kit-December Update(示例代码)安装目录下C:\WindowsAzurePlatformKit\Labs\IntroServiceBus\Source\Ex05-MessageBuffer\end\CS(默认路径)找到完整的MssageBuffer程序代码。双击MssageBuffer.sln,以打开项目。

2.          为了调试方便,请分别打开OrderPeek项目,OrderProcessor和OrderSubmitter项目的Program.cs,以您在本教程第一篇文章中的信息,将相应处改为如下代码:

Console.Write("Your Service Namespace: ");

string serviceNamespace = "{your service namespace}";//Console.ReadLine();

Console.Write("Your Issuer Name: ");

string issuerName = "{your issuer name}"; //Console.ReadLine();

Console.Write("Your Issuer Secret: ");

string issuerSecret = "{your issuer secret}"; //Console.ReadLine();

验证:

3.          OrderPeek项目会创建一个存放订单的MessageBuffer,并能查看是否有未处理的订单。

OrderSubmitter项目会生成新订单,并放入OrderPeek创建的MessageBuffer。

OrderProcessor项目会处理MessageBuffer中的订单。

4.          右击OrderPeek项目,Debug->Start  new instance。

5.          右击OrderSubmitter项目,Debug->Start new instance。按照提示,输入字符串信息:

例如:

i.      200 nails [回车]

ii.      1 hammer [回车]

iii.      1 wrench [回车]

如下图:

6.                        我们看到OrderPeek实例会查看MessageBuffer是否有未处理的订单(order),并显示第一条未处理订单。如下图:

7.                      右击OrderProcessor项目,Debug->Start new instance。 OrderProcessor会查看是否有有订单,轮询并打印出订单内容。如下图:

最后,我们看到在第5步中发送的订单都已经被处理。

8.          我们可以增加OrderProcessor(消费者的角色)的实例个数,来满足当在MessageBuffer中有许多Message需要被处理时的高负荷需求。当然,我们也可以有多个OrderSubmitter(生产者的角色)实例。

探析:

9.          我们先来看看如何创建一个MessageBuffer。打开OrderPeek项目的Program.cs,如下图:

9.1 创建端点凭证(endpoint credentials)

9.2 创建MessageBuffer挂载的URI

9.3 创建MessageBufferPolicy。MessageBufferPolicy是创建MessageBuffer时的必要参数。以下为MessageBufferPolicy各属性及其含义。

MessageBufferPolicy 属性
 描述
 
ExpireAfter
 message buffer的生命周期
 
MaxMessageCount
 在溢出策略被激活前,message buffer所能容纳最大message数量。
 
OverflowPolicy
 当message溢出时的行为。当前,当前唯一可用的行为是拒绝新进message,并向发送者发送错误信息。
 
TransportProtection
 传输防护指端对端必须使用的安全等级。
 
Authorization
 指定了发送和接收所需的授权类型,可以选择 “NotRequired”, “Required”, “RequiredToReceive” 和 “RequiredToSend”.

调用EnsureMessageBufferExists函数来确保MessageBuffer被顺利创建。

EnsureMessageBufferExists内部实现如下图:

如果已经存在MessageBuffer,则调用GetMessageBuffer返回已经存在的MessageBuffer。若不存在,GetMessageBuffer会抛出异常,之后调用CreateMessageBuffer,创建新的MessageBuffer。

10.        创建好MessageBuffer之后,我们看下如何向该MessageBuffer发送Message。打开OrderSubmitter项目的Program.cs。

10.1取得已经创建好的MessageBuffer。

10.2因为不同的场景下需要发送不同的对象,需要将不同对象转换为MessageBuffer能处理的Message对象。System.ServiceModel程序集为我们提供了方便易用的TypedMessageConverter类来将对象转换为Message。

10.3将对象转换为Message之后,只需调用Send方法来发送Message。

10.4以上是MessageBuffer较高层次的封装,有兴趣的读者可以研究下AppFabric SDK 安装目录:Windows Azure platform AppFabric SDK\V1.0\Samples\ServiceBus\ExploringFeatures\MessageBuffer\PlainHttp\CS35内PlainHttp项目。其演示了如何通过REST协议来操作MessageBuffer,REST协议是独立于语言和操作系统的,所以可以在非Windows系统上使用java等语言来使用MessageBuffer。

11.        同样的,处理Message的代码也非常简单。

11.1调用EnsureMessageBufferExisits,因为我们的OderPeek项目已经创建了MessageBuffer,所以这一步我们会取得该MessageBuffer的引用。

11.2初始化TypedMessageConverter。

11.3取得第一条Message。

11.4将Message用TypedMessageConverter转换为需要处理的对象。

11.5ProcessOrder为处理过程。

11.6轮询下一条Message。

12. 更多MessageBuffer应用请参看AppFabric SDK 安装目录:Windows Azure platform AppFabric SDK\V1.0\Samples\ServiceBus\ExploringFeatures\MessageBuffer\目录下的项目。

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/azurechina/archive/2010/05/27/5629210.aspx

时间: 2024-07-28 22:24:41

Windows Azure AppFabric 入门教学系列 (六):Message Buffer之初体验的相关文章

Windows Azure AppFabric 入门教学系列 (五):初探Access Control Service

本文是Windows Azure AppFabric入门教学的第五篇文章.本文会对AppFabric中的Access Control Service(ACS)做初步的讲解.为了使后续的学习顺利进行请确保已浏览本教程的第一篇文章,并以按照该文完成了AppFabric项目和命名空间的创建.我们知道,AppFabirc由Service Bus 和 Access Control Service组成,在前一篇教程中我们已介绍过Service Bus,所以本文将简略的介绍如何使用ACS服务来确保安全性. 同

Windows Azure AppFabric 入门教学系列 (三):LABS环境

本文是Windows Azure AppFabric入门教学的第三篇文章.我们会介绍一下LABS环境. 微软AppFabric团队与2010年3月11日推出了AppFabric LABS环境.AppFabric团队会用其展示一些早期特性,并从社区获得反馈.用户无需为该环境的使用付费. AppFabric LABS 使得用户能够测试并使用实验性的AppFabric技术.对于那些激动人心的功能和特性,我们希望从用户那里尽快的获得反馈.LABS环境并没有SLA协议的支持,但您可以获得AppFabric

Windows Azure AppFabric 入门教学系列 (四):SWT 和OAuth WRAP介绍

本文是Windows Azure AppFabric入门教学的第四篇文章.我们知道AppFabric中的Access Control Service在验证授权过程中会使用到SWT 和OAuth WRAP,所以为了更好的了解ACS其内部原理,我们会在本教程中简单地介绍SWT 和OAuth WRAP协议. Simple Web Token (SWT) SWT简介: Simple Web Token (SWT)定义了传输简单声明的格式,其兼容性和格式能够轻易的被放入例如HTTP等协议的头部.一个简单的

Windows Azure AppFabric 入门教学系列 (二):一个简单的Service Bus例子

本文是Windows Azure AppFabric入门教学的第二篇文章,可以说是正式的开始学习AppFabric了.为了使后续的学习顺利进行请确保已浏览本教程的第一篇文章,并以按照该文完成了AppFabric项目和命名空间的创建.我们知道,AppFabirc由Service Bus 和 Access Control Service组成.本篇教学以一个简单的Echo程序来向大家简单的介绍一下Service Bus,让大家能有一个初步了解. 该程序演示了Client向Service发送消息,ser

Windows Azure入门教学系列 (六):使用Table Storage

本文是Windows Azure入门教学的第六篇文章. 本文将会介绍如何使用Table Storage.Table Storage提供给我们一个云端的表格结构.我们可以把他想象为XML文件或者是一个轻量级的数据库(当然,不是通过SQL 语句进行数据的操作). 使用Table Storage的方法依然是调用REST API.有关Table Storage REST API的详细信息,请参见Table服务API: 为了方便.NET开发人员,我们在SDK中提供了Microsoft.WindowsAzu

Windows Azure入门教学系列 (七):使用REST API访问Storage Service

本文是Windows Azure入门教学的第七篇文章. 本文将会介绍如何使用REST API来直接访问Storage Service. 在前三篇教学中,我们已经学习了使用Windows Azure SDK所提供的StorageClient来使用Blob Storage, Queue Storage以及Table Storage的基本方法.我们在前几篇教学中也提及最终StorageClient也是通过发送REST请求来与服务器端通信的. 在这篇教学中,我们会以Blob Storage为例,说明如何

Windows Azure入门教学系列 (一): 创建第一个WebRole程序

原文 Windows Azure入门教学系列 (一): 创建第一个WebRole程序 在第一篇教学中,我们将学习如何在Visual Studio 2008 SP1中创建一个WebRole程序(C#语言).在开始学习之前,请确保你的机器上已经安装了: Windows Azure Tools for Microsoft Visual Studio 1.1 (February 2010) Windows Azure Software Development Kit (November 2009) 步骤

Windows Azure SendGrid入门指南

今天的文章来自SendGrid的软件工程师Gabe Moothart.SendGrid 提供了一种基于云计算的电子http://www.aliyun.com/zixun/aggregation/12489.html">邮件服务,减轻企业的成本和维护自定义电子邮件系统的复杂性. 作为Windows Azure客户,您知道您可以轻松地访问一个高度可扩展的集成到任何 Windows Azure 环境上的应用程序的电子邮件提交解决方案? Windows Azure SendGrid 入门是很容易的

Windows Azure AppFabric云中间件解析

在云上运行应用是云计算的一个重要服务,但这只是其中一个方面.Windows Azure平台还能提供更多基于云的服务,这种服务能被传统的自有应用或云计算平台上的应用调用.这正是Windows Azure platform AppFabric服务的目标.在创建分布式应用时,通过Windows Azure platform AppFabric服务可以解决普遍存在的基础架构方面的问题.图1.11展示了其核心的组件:服务总线和访问控制服务. ▲图1. Windows Azure AppFabric的主要功