公告
:本博客为微软云计算中文博客
的镜像博客。
部分文章因为博客兼容性问题
,会影响阅读体验
。如遇此情况,请访问
原博客
。
本文是
Windows Azure
入门教学
的第五篇文章。
本文将会介绍如何使用
Queue Storage。
QueueStorage提供给我们一个云端的队列。我们可以用
Queue
Storage来进行进程间的相互通信(包括运行在不同机器上的进程之间的通信)。
一个使用
Queue Storage经典的场景是,在一个
Web应用程序中,用户通过表单递交给服务器数据,服务器收到数据后将进行处理,而这一处理将花费很多时间。这种情况下,服务器端通过
Queue
Storage可以把用户递交的信息存储在队列中,后台再运行一个程序从队列中取得数据进行信息的处理。
以往如果程序时运行在
Windows操作系统上,那么我们可以使用
MSMQ
来做类似的工作。而
Queue Storage的出现为我们提供了另一种选择。特别是在非
Windows操作系统上,我们依然可以使用
Queue Storage的
REST
API来很方便地使用它。
有关
Queue
StorageRESTAPI的详细信息,请参见
Queue
服务
API
。
为了方便
.NET开发人员,我们在
SDK中提供了
Microsoft.WindowsAzure.StorageClient类来帮助发送
REST请求。
在开始本教学之前,请确保你从
Windows Azure
平台下载
下载并安装了最新的
Windows Azure开发工具。
本教学使用
Visual Studio 2010作为开发工具。
步骤一:创建解决方案和项目
由于我们要在本地模拟环境下测试
Queue Storage,首先,请确保
Storage Emulator已经启动。我们可以找到管理器的进程手动启动或者让
Visual Studio 2010帮助我们启动他。
右击工具栏中
Windows Azure模拟器的图标,选择”
Show Storage Emulator UI”。弹出如下图所示的窗口:
我们要关注的是
Service management中
Queue所在的一行。要确保
Status为
Running。
确认完毕后启动
Visual Studio 2010,并且新建两个
Console项目。我们将演示如何在一个
Console程序中往
Queue
Storage中添加信息然后另外一个
Console程序如何读取并处理信息。
步骤二:添加
SDK
程序集引用
请在项目属性页里确认项目的
Target framework的值是
.NET Framework 4或
.NET Framework
3.5。然后在两个
Console项目中均添加
C:/Program
Files/Windows Azure SDK/v1.3/ref/Microsoft.WindowsAzure.StorageClient.dll的引用。该路径为
SDK默认安装路径,如果你不能在这个路径中找到
Microsoft.WindowsAzure.StorageClient.dll请从
SDK安装路径中寻找。
步骤三:添加代码
首先在两个项目中的
Program.cs中均引用命名空间:
using
System.Threading;
using
Microsoft.WindowsAzure;
using
Microsoft.WindowsAzure.StorageClient;
然后在其中一个项目(为了叙述方便,后面称之为
Client项目)的
Main方法中加入如下代码,我们将用它来向
Queue
Storage中添加信息。
static
void
Main(string
[] args)
{
var
storageAccount =
CloudStorageAccount
.DevelopmentStorageAccount;
var
queueStorage =
storageAccount.CreateCloudQueueClient();
//
检查名为
helloworldqueue
的队列是否被创建,如果没有,创建它
var
queue =
queueStorage.GetQueueReference("helloworldqueue"
);
queue.CreateIfNotExist();
Console
.WriteLine("Client is running..."
);
while
(true
)
{
//
插入数据到队列中
queue.AddMessage(new
CloudQueueMessage
(string
.Format("client
sent information: {0}"
,
DateTime
.UtcNow.ToString())));
//
每次插入数据后线程休息
3
秒
Thread
.Sleep(3000);
}
}
接着在另外一个项目(为了叙述方便,后面称之为
Server项目)的
Main方法中加入如下代码,我们将用它来从
Queue
Storage中读取信息和进行处理。
static
void
Main(string
[] args)
{
var
storageAccount =
CloudStorageAccount
.DevelopmentStorageAccount;
var
queueStorage =
storageAccount.CreateCloudQueueClient();
//
检查名为
helloworldqueue
的队列是否被创建,如果没有,创建它
var
queue =
queueStorage.GetQueueReference("helloworldqueue"
);
queue.CreateIfNotExist();
Console
.WriteLine("Server is running..."
);
while
(true
)
{
//
从队列中读取一条信息
//
收到信息后可以根据收到的信息做处理,为了演示方便我们这里只是把信息显示出来
//
在云端发送消息后这条消息将对于后续的请求不可见,但是并未被删除。我们需要显示删除它。
//
否则在一段时间后该消息将重新可见。这一设计的好处是确保了所有消息都能够被处理。
//
如果程序在收到消息后处理消息前就异常终止了那么数据依然在一段时间后可以被重新处理。
//
详情请参考
MSDN
文档
var
message
= queue.GetMessage();
if
(message
!=
null
)
{
Console
.WriteLine(string
.Format("Message
retrieved: {0}"
, message.AsString));
//
处理完数据后必须显示删除消息
queue.DeleteMessage(message);
}
//
每次读取数据后线程休息
3
秒
Thread
.Sleep(3000);
}
}
步骤四:观察并分析代码
步骤三中的代码中,首先我们通过
CloudStorageAccount.DevelopmentStorageAccount来说明我们使用的本地的
Development Storage自带账户而不是真正的云端存储服务账户。
(如果要用真实账户可以使用
//
DefaultEndpointsProtocol=https
可以改成
DefaultEndpointsProtocol=http
表示用
HTTP
而不是
HTTPS
CloudStorageAccount
.Parse("DefaultEndpointsProtocol=https;AccountName=[
用户名
];AccountKey=[
密码
]"
);
来实例化对象
)然后通过该账户类来实例化一个
Queue客户端类。这两步是使用
SDK中
StorageClient程序集来调用
Queue Storage服务的必要步骤。
Client项目中的代码相对简单。大约每隔
3秒向
Queue Storage中插入一条数据。
Server端的项目中我们则大约每隔
3秒从
Queue Storage中读取一条数据。处理完毕后将之删除。对于为什么必须在读取后显示删除的问题请参考注释部分。
步骤五:运行程序
先运行
Client程序然后运行
Server个程序。如果一切正常,你将会看到
Server项目的
Console程序输出收到的消息:
注意由于是本地模拟,
Client和
Server程序需要要在同一台机器上运行。但是如果使用真实账户的话,
Client和
Server程序就可以跨越机器进行通信了。
分享到:
相关推荐
摘要:无责任WindowsAzureSDK.NET开发入门篇,将带来一系列基础文章:从WindowsAzure开发前准备工作、使用AzureAD管理用户信息、创建管理“云”服务、到使用BlobStorage服务等,帮助读者轻易上手使用这套开发工具。...
总的来说,《Windows Azure入门指南》将引导你进入Azure的世界,理解其核心概念、开发流程和最佳实践,助你在云计算领域迈出坚实的第一步。无论你是开发者、系统管理员还是IT决策者,都能从中受益,为你的项目和业务...
“Windows Azure从入门到精通含源代码”这本书很可能包含了实际示例,帮助读者通过实践理解Azure的用法。书中的源代码可能涵盖了如何使用Azure SDK进行开发,以及如何部署和管理应用程序。通过阅读和运行这些代码,...
《Windows Azure从入门到精通》是一本全面介绍微软云服务平台Windows Azure的指南,旨在帮助初学者快速理解和掌握Azure的核心概念和技术。通过本书,读者可以深入理解云计算的基础,以及如何利用Azure构建、部署和...
#### DAY-1:云计算基础与Azure入门 **云计算定义** 云计算是一种通过互联网提供托管服务的技术,包括数据存储、服务器、数据库、网络连接以及软件等资源。这些资源都存储在由云服务提供商维护的物理服务器上,并...
示例可能涵盖如Azure App Service(用于Web应用)、Azure Functions(无服务器计算)、Azure Storage(包括Blob、Queue和Table存储)、Azure Cosmos DB(全球分布式多模型数据库服务)等Azure服务的使用。...
这是一个用于使用Azure Storage Queue服务的示例类库。 它包括用于将字符串和对象作为队列消息发送和接收的方法。 入门 此示例内置于Visual Studio 2017的.NET v 4.62中,但可以在不更改Microsoft WindowsAzure....
- 存储服务:包括Blob存储(对象存储),Queue和Table Storage(NoSQL数据存储)以及File Storage(共享文件系统)。 - 数据库服务:Azure SQL Database(托管SQL服务)、Cosmos DB(全球分布式多模型数据库)等。...
8. **依赖管理**:作为Python库,`azurestoragewrap`将依赖于Microsoft Azure的官方SDK,如`azure-storage-blob`、`azure-storage-table`和`azure-storage-queue`,这些依赖项通常在`setup.py`或`requirements.txt`...
8. **Azure Storage**:如果项目涉及数据存储,可能还会用到Azure Blob存储(文件存储)、Table Storage(NoSQL数据存储)或Queue Storage(消息队列)等服务。 9. **身份验证与授权**:Azure Active Directory ...
特征队列创建、列出和删除队列,并使用队列元数据和属性创建、获取、查看、更新、删除消息请查看详细信息。入门最低要求PHP 5.6 或以上有关依赖项,请参阅 PHP 所需的扩展名: ...
2. **Azure 服务**:熟悉Azure的主要服务,如Azure Storage(存储账户、Blob、Queue、Table等)、Azure Compute(虚拟机、函数、容器实例等)和Azure SQL Database。 3. **数据管理与分析**:理解Azure Data Lake ...
7. **Azure Storage**:Azure Storage提供了多种云存储解决方案,如Blob、Table和Queue存储。Mobile3的资源可能包括如何在Xamarin应用中使用Azure Storage来存储和检索数据的实例。 8. **Cosmos DB**:Azure Cosmos...
6. **数据存储和管理**:Azure Storage服务的使用,包括Blob、Table和Queue存储。 通过完成这样的作业,学生可以增强其在云计算环境中的实际操作能力,理解大数据处理流程,并熟悉Azure平台的相关服务。
3. **存储服务**:涵盖Blob、Table、Queue和File Storage,以及数据备份和恢复策略。 4. **网络服务**:VNet、负载均衡器、应用网关、DNS和CDN的使用。 5. **身份与访问管理**:Azure Active Directory(Azure AD)的...