最后的有关队列的简单规则
看到“mymessage090120”这个队列名了吗? 这是我想告诉的另外一个注意事项,那就是Azure Container的命名规则,队列名,表名这些在Azure中都算是一个容器(Container)的标示,容器名必须是一个有效的DNS (Domain Name System)的名称,并遵守下面规则
规则1:队列、Blob容器和表的名称的命名规则
·名称必须以数字或字母开头,并且有字母,数字,. 符号(period)和-符号(dash)组成
·所有的字母必须是小写
·名称的长度在3-63个字符之间
·在. 符号后面不能直接跟-符号
简单说来,就是必须符合这个正则表达式 ^([a-z]|\d){1}([a-z]|-|\d){1,61}([a-z]|\d){1}$,另外一个是表名的约束ValidTableNameRegex = @"^([a-z]|[A-Z]){1}([a-z]|[A-Z]|\d){2,62}$"
我一开始没有注意到这些,使用了大写字母,结果 Debug了折腾了一圈才找到错误。
规则2 :一个队列能够包括无数个消息,每个消息的大小不能超过8K(MaxMessageSize = 8 * 1024),消息在队列中的最大存活时间为7天(MaxTimeToLive = 7 * 24 * 60 * 60)
相关的信息,可以在Queue.cs 和RESThelpers.cs 中找到一些。
规则3:队列存储是跟随和绑定在一个Azure平台的帐号下的,队列存储中包含无限量的消息。从REST的路径上可以看出http://<Account>.queue.core.windows.net/<QueueName>
规则4:Azure队列服务提供的是可靠的队列化的消息服务,它能确保消息至少被接收到一次,适合在异步的任务分发和查询场景中,并且只要Azure平台的帐号不变,队列存储本身是可靠和持久性的存储(Durable Storage)。