问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

怎么使用Windows Azure Queue Storage 服务

发布网友 发布时间:2022-04-23 15:01

我来回答

1个回答

热心网友 时间:2022-04-12 10:30

什么是Windows Azure Queue Storage 队列存储

Windows Azure Queue
Storage存储大量的信息,可以在世界任何地方通过验证的调用,使用HTTP或HTTPS访问的服务。一个单一的队列信息可高达64KB的大小,队列
可以包含数百万条消息,每个存储帐户(storage account)*的总容量高达100TB。队列存储的常见用途包括:

创建异步处理积压的工作
从Windows Azure的Web角色的消息传递到Windows Azure Worker角色

基本概念

队列服务包含以下组件:

URL 格式:队列服务,是通过REST来访问的,基于URL地址访问。格式如下:

http://<storage account>.queue.core.windows.net/<queue>

上面图表的Queue的URL为:

http://myaccount.queue.core.windows.net/imagesToDownload

存储账户(Storage Account):Azure Storage访问是通过REST方式,使用对称加密方式(Symmetric)。一个账户能访问所有的云存储(Blob、Table、Queue)。

队列(Queue):一个队列能存储大量的信息。存储队列不能保证FIFO,而且还能多次读取同一个消息。

消息(Message):能存储字符串或者字节数组,一个消息不能大于64k(包括除message信息的其他信息,传递的信息大小不能超过49152字节)。

创建存储账户

在使用云存储前,得需要到云管理平台上创建存储账户。

构建访问存储连接字符串(StorageConnectionString)

连接字符串包含三个部分:DefaultEndpointsProtocol,AccountName,AccountKey

EndpointsProtocol只能是https和http,再次说明他是基于REST方式访问的(REST over http or https)。

AccountName和AccountKey可以到云管理平台查询到

连接窜组成格式如下:

DefaultEndpointsProtocol=https;AccountName=[AccountName];AccountKey=[AccountKey]

配置文件

部署云服务需要两个文件,分别是*.cspkg和*.cscfg。

前者其实是一个zip压缩文件,包含所有部署的配置信息。

后者包含webrole和worker role的工作的具体信息。

我们可以把连接字符串写在*.cscfg里面,也就是开发时云服务项目的*.cloud.cscfg、*.local.cscfg、*.csdef文件里面。

<configuration>
<connectionStrings>
<add name="StorageConnectionString"
connectionString="DefaultEndpointsProtocol=https;AccountName=[AccountName];AccountKey=[AccountKey]" />
</connectionStrings>
</configuration>

怎样开发访问队列

需要的程序集如下:

Microsoft.WindowsAzure.Storage.dll

开发代码:

// 通过连接字符串解析CloudStorageAccount实例
// Endpoint "http://storageacount.queue.core.windows.net"
CloudStorageAccount cloudStorageAccount = CloudStorageAccount.Parse(CloudConfigurationManager.GetSetting("StorageConnetionString"));

#region 队列操作
// 创建客户端存储队列实例
CloudQueueClient queueClient = cloudStorageAccount.CreateCloudQueueClient();

// 通过队列名称获取服务端存储队列实例
// Endpoint "http://storageaccount.queue.core.windows.net/eric-queue-1".
// 队列名称必须为小写
CloudQueue cloudQueue = queueClient.GetQueueReference("eric-quque-1");
//也可以直接创建
//CloudQueue cloudQueue = new CloudQueue(new Uri("http://storageaccount.queue.core.windows.net/eric-queue-1"), new Microsoft.WindowsAzure.Storage.Auth.StorageCredentials(accountName, keyValue));

// 如果队列不存在就创建一个
cloudQueue.CreateIfNotExists();

// 清除队列,清除可视、不可视和过期的所有消息。
cloudQueue.Clear();

// 删除队列,这个队列就不存在了
cloudQueue.Delete();
#endregion

#region 队列消息操作

// 发送消息,消息可以为字符串或者字节数组,最大为64K, TTL最大为7天,visibilityDelay必须小于TTL
cloudQueue.AddMessage(new CloudQueueMessage("Hello world!"), new TimeSpan(0, 0, 10), new TimeSpan(0, 0, 1), null, null);

// 获取消息, 获取从队头开始第一个可视的消息,就是nextVisibilityTimeout到了的消息
// 输入的参数visibilityTimeout是这个消息下次可视的时间间隔
// 通过Get方式获取的消息,能够更新(update)和删除(delete)
CloudQueueMessage message = cloudQueue.GetMessage(new TimeSpan(0, 0, 10));

// 修改消息,修改消息的内容和下次可视时间间隔, 也可以只修改下次可视时间间隔
message.SetMessageContent("Hello Eric Wen!");
cloudQueue.UpdateMessage(message, new TimeSpan(0, 0, 10), MessageUpdateFields.Content | MessageUpdateFields.Visibility);
cloudQueue.UpdateMessage(message, new TimeSpan(0, 0, 10), MessageUpdateFields.Visibility);

// 删除消息, 通过Get方式获取的消息,它的Id和PopReceipt有值,有这两个值才能修改和删除消息
cloudQueue.DeleteMessage(message);
cloudQueue.DeleteMessage(message.Id, message.PopReceipt);

// 查看消息,只能查看可视的消息,获取从队头开始第一个可视的消息。
// 查看消息不会改变CloudQueueMessage的DequeueCount和NextVisibleTime属性
// 这个消息是只读消息,不能更新和删除操作
message = cloudQueue.PeekMessage();

// 获取批量消息, 一次只能最多获取32条消息
IEnumerable<CloudQueueMessage> query = cloudQueue.GetMessages(32);
query = cloudQueue.PeekMessages(32);

#endregion
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
ef英语哪个好 EF英孚英语培训怎么样? 英孚英语好不好 EF英孚教育到底好不好 大佬们,麦芒7和荣耀10那个值得入手?2500以下的机子还有啥好推荐的么... 介绍几款2500元以前的手机 像素一定要高 其他的不做要求 近期想入手一部安卓手机,价格2200到2500左右…买HTC desire Z还是 三星... 笔记本忘记开机密码怎么办急死了 笔记本电脑屏幕开机锁忘记密码 怎么办?急死了 华硕笔记本电脑开机密码忘记了怎样找回?系统是Windows 7旗舰版... 微信收到信息对方已添加我为通讯录好友,我还未验证同意,为什么对方就能... 微信别人把我添加到通讯录里面。我没有添加他。那我添加他的时候他那边会显示我添加了吗 吗? 微软 云存储计算,服务器在中国吗 开外卖店是先办手续和执照还是先租商铺? 云存自动快进是怎么回事 在家做外卖如何办理营业执照? 有哪些值得推荐的云存储服务?理由是什么 做家庭式外卖怎么办营业执照? 微软云怎么样 在家做外卖需要什么执照? 微软的云存储Skydrive怎么关闭开机启动呀 微软的onedrive的云存储图片为什么下载查看时不清晰? goodnotes云存储为什么登录不上OneDrive? 我想做美团外卖,需要办理营业执照怎么弄 微软公司的云计算服务有哪些? OneDrive是做什么用的? 我移动宽带上网!网页游戏打不开!l联不上37玩的服务器!要用网络加速度器!有没有那个有免费的上网加速度器! 有哪个音乐电台是全国都能收听的啊? l联合国秘书长是谁? 请问全国各地都能收听到的中央人民广播电台的频率是多少 Win10怎么关闭云存储服务OneDrive 微信,对方把我加人通讯录,我没有加他,他可以给我发信息吗 微信明明是对方加的我,我这微信好友来源却显示通过手机通讯录添加,没有对方二_百度问一问 微信别人添加我为好友提示“XX刚刚把你添加到通讯录” 微信对方请求添加我为好友, 显示是来自通讯录的好友 但又没有显示对方手机号 本人又不认识 请问这个 为什么微信别人不认识的人加我全是通过通讯录加?全都不显示在新的朋友那里 微信对方请求添加我为好友时显示:“来自通讯录的好友”,是指对方的通讯录还是我的通讯录? 手机qq无法登录怎样更改密保手机号? 为什么有人通过手机联系人添加我微信,我这边不显示有人加我??? 为什么微信通讯录里显示有人加我好友?我点进去却还是添加呢?为什么不是接受呢? 假如微信对方加入了我通讯录,对方知道我手机号所以加入了我通讯录,不过我不知道对方手机号的,后来这对 qq没有登陆的情况下怎样改密保手机号 怎么在不登qq的情况下,修改密保手机号码 《谁懂我的心》这部电视剧,主要讲的是什么? 电视剧《谁懂我的心》中的卫娜是谁扮演的?她还演过哪些电视剧? 谁懂我的心? 谁懂我的心是哪年拍摄的? 电视剧 谁懂我的心 的女主角叫什么?有资料吗? 电视剧 谁懂我的心 里的司徒夏是谁演的啊? 电视剧《谁懂我的心》的下载地址。