Azure 入门基础:Queue Storage

Azure Storage 是微软 Azure 云提供的云端存储解决方案,当前支持的存储类型有 Blob、Queue、File 和 Table。

Azure 入门基础:Queue Storage

笔者在前文中介绍了 File Storage 的基本用法,本文将介绍 Queue Storage 的主要使用方法。

Queue Storage 是什么?

Azure Queue Storage 是一个存储大量消息的存储服务,这些消息可以在任何地方通过 HTTP/HTTPS 访问。每条消息最大 64K,消息的数据量几乎不受限制 (除非超出了您的 Storage Account 的总容量) 。

下面是 Queue Storage 典型的应用场景:
1.   创建未处理任务的队列,以便异步的处理这些任务。
2.   把消息从 web role 传递给 worker role 进行处理。

Azure Queue Storage的结构

下图描述了 Queue Storage 的基本组织结构:

Azure 入门基础:Queue Storage

Azure Storage Account:

Storage Account 是用来管理 Azure Storage 的一个命名空间,主要用来控制存储数据的访问权限和计费。对 Blob、Queue、File 和 Table 这些 Azure 提供的存储服务的访问控制都是通过 Storage Account 来进行的,所以要想使用 Queue Storage,需要先创建你的 Storage Account。

Queue:

每个 Queue 都是一组消息的集合。每一条消息都必须属于一个 Queue。Queue 名称中的字符必须是小写。

Message:

每条 Message 的最大长度为 64KB,Message 在 Queue 中停留的最长时间为 7 天。

URL format:

Queue 的 URL 地址格式为:

<storage account>.queue.core.windows.net/<queuename>

下面是个更真实的例子:

如果您还不熟悉 Azure Storage Account 的使用,以及如何通过 WindowsAzure.Storage 库访问 Azure Storage,请参考前文《Azure Table storage 基本用法》中的介绍,这里就不重复了。

为了方便查看 C# 代码执行的结果,本文使用了 MS 发布的一个 Azure Storage 客户端工具:Microsoft Azure Storage Explorer,文中简称为 Storage Explorer。下面是 Queue Storage 的一个截图:

Azure 入门基础:Queue Storage

接下来我们通过 C# 代码来介绍如何操作 Queue Storage。

创建 Queue

我们先来创建一个名为 "app2tasks" 的 Queue:

// CloudStorageAccount 类表示一个 Azure Storage Account,我们需要先创建它的实例,才能访问属于它的资源。 // 注意连接字符串中的xxx和yyy,分别对应Access keys中的Storage account name 和 key。 CloudStorageAccount storageAccount = CloudStorageAccount.Parse("DefaultEndpointsProtocol=https;AccountName=xxx;AccountKey=yyy"); // CloudQueueClient 类是 Windows Azure Queue Service 客户端的逻辑表示,我们需要使用它来配置和执行对 Queue Storage 的操作。 CloudQueueClient queueClient = storageAccount.CreateCloudQueueClient(); // CloudQueue 表示一个 Queue 对象, 绝大多数的操作都是通过这个对象完成的。 CloudQueue queue = queueClient.GetQueueReference("app2tasks"); // 如果不存在就创建名称为 "app2tasks" 的 Queue。 queue.CreateIfNotExists();

执行上面的代码,然后在 Storage Explorer 中查看结果:

Azure 入门基础:Queue Storage

把消息插入 Queue

现实的应用场景中肯定有一个或多个程序产生 Message 并插入到 Queue 中,接下来我们看看用 C# 如何实现:

string current = DateTime.Now.ToString(); // 把消息插入到队列中。 CloudQueueMessage message = new CloudQueueMessage("Hello, World. -- " + current); queue.AddMessage(message)

调用几次上面的代码看看结果如何:

Azure 入门基础:Queue Storage

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/13830.html