版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、消息服务API使用手册消息服务/API使用手册消息服务/API使用手册 PAGE 109 PAGE 109API使用手册简介消息服务简介MNS能够帮助应用开发者在他们应用的分布式组件上自由的传递数据,构建松耦合系统。MNS 提供两种功能:队列模型(Queue)和主题模型(Topic)。其中队列模型支持一对一发送和接收消息,已经商用;主题模型提供pub/sub模型,支持一对多订阅和通知消息,公测中。队列模型消费消息时尽量做到先进先出,正是因为分布式消息队列的一些特性并不能保证你能按照消息的发送 顺序消费消息,如果你的业务必需先进先出, 建议在消息中加入序号信息以便消费消息后进行重新排序。主题模型
2、主题模型支持服务端主动将消息推送给用户指定的回调地址(Endpoint),消除用户程序不必要的轮 询和资源消耗。主题模型保证通知消息按照指定的策略推送给用户,支持多个消息发布者并发操作同一个主题。主题模式支持一对多广播消息,一条通知消息可以同时被多个订阅者接收和消费。基本概念AccountAccount 是阿里云的注册用户,在 MNS 中以阿里云注册帐号的 ID 表示。队列模型队列所有者MNSAccountCreateQueueAccountID在阿里云官网可以查看。生产者、消费者生产者,向 MNS 的消息队列发送消息的角色。消费者,从 MNS 的消息队列获取消息的角色。主题模型主题所有者开通
3、 MNS 服务的 Account 通过 CreateTopic 接口创建出一个主题,这个 Account 就是该主题的所有者,主题所有者拥有该主题的所有操作权限。发布者、订阅者发布者,向 MNS 的主题发布消息的角色。订阅者,从 MNS 的主题接收消息的角色。Queue队列是消息存储的目的地,队列可以分成普通队列和延时队列两类。如果发送消息时不指定消息延时参数,被发送到普通队列的消息立刻可以被消费,而发送到延时队列需要经过 设定的延时时间后才能被消费。队列属性DelaySeconds消息延迟时间,单位为秒;- 取值范围:0 604800秒(7天);当该属性大于0时,发送到队列的所有消息是延迟消
4、息,经过该属性指定的秒数后变为可消费消息;如果发送消息请求指定了DelaySeconds,以请求指定的DelaySeconds为准;MaximumMessageSize消息体最大长度,单位为Byte;- 取值范围:1024 65536Byte(64KB);该属性用于限制发送到队列的消息体最大长度,超过该长度发送消息失败;MessageRetentionPeriod消息最长保留时间,单位为秒;- 取值范围:60 1296000秒(15天);发送到队列的消息最长保留该时长,超过指定时间,无论消息是否被消费都将被删除;VisibilityTimeout消息被receive后的隐藏时长,单位为秒;-
5、取值范围:1 43200秒(12小时);消息被receive后,在该属性指定的这段时间内消息处于隐藏状态,在这段时间内,可以删除消息或者 修改消息隐藏时长;超过这段时间,消息可以再次被receive;PollingWaitSeconds(batch)receivemessage请求最长等待时间,单位为秒;- 取值范围:0 30秒;当队列中没有消息时,(batch)receive message请求将挂在 MNS 服务器端;在该属性指定的时间范围内,如果有消息发送到队列中,立即返回消息给用户;如果超过该时间,仍然没有消息,返回MessageNotExist;如果(batch)receivemes
6、sage请求指定了waitseconds,以请求指定的时间为准;LoggingEnabled是否开启日志管理功能;取值范围:True/False;当该属性为True时,MNS详情;CreateTime队列创建时间,从1970-1-1 00:00:00修改队列属性信息最近时间,从1970-1-1 00:00:00 到现在的秒值; ActiveMessages队列中处于 Active 状态的消息总数,为近似值; InactiveMessages队列中处于 Inactive 状态的消息总数,为近似值; DelayMessagesDelayedQueueURL格式:http:/$AccountId.m
7、ns./queues/$QueueNamemns.MNSRegionMNSAccountIdID;QueueNameAccountIdRegion队列消息用户发送到队列的消息;发送消息时可以指定消息体、消息延迟时长、消息优先级;消息属性MessageId消息编号;(batchsend/receive/peekmessageMessageId;消息发送到队列中,MNS 会生成一个 MessageId,该编号一旦生成就不会变化,可以用来做数据校队;NextVisibleTime消息下次可被消费的时间,从1970年1月1日 00:00:00 000 开始的毫秒数;(batchreceivemessa
8、gechangemessagevisibilityReceiptHandle消息临时句柄;(batchreceivemessagechangemessagevisibility该句柄用于删除和修改处于Inactive状态的消息,NextVisibleTime之前有效,超过该时间使用句柄MNS 会提示MessageNotExist;消息临时句柄只能使用一次,如果该句柄标识的消息状态发生改变,该句柄就会失效;MessageBody消息正文;(batchreceive/peekmessageMessageBodyMD5消息正文的MD5值;(batchsend/receive/peekmessageE
9、nqueueTime1970年1月100:00:00000(batchreceive/peekmessageFirstDequeueTime消息第一次被消费的时间,从1970年1月100:00:00000(batchreceive/peekmessage如果消息从未被消费过,该属性与EnqueueTime相同;DequeueCount消息总共被消费的次数(即被receive的次数);(batchreceive/peekmessagePriority消息的优先级权值,取值范围:116,其中1为最高优先级;(batchreceive/peekmessage消息类型延时消息这类消息发送到队列后,需要
10、经过 DelaySeconds 指定的时间后才可被消费;发送(batch)send message请求时指定或者配置队列的 DelaySeconds 属性;消息状态普通消息被发送到普通队列时,初始状态是 Active,当其被取走后在VisibilityTimeout 的时间内状态为 Inactive,若超过 VisibilityTimeout 时间后消息还未被删除,消息会重新变成Active状态;如果在VisibilityTimeout 时间内被删除, 消息状态变为 Deleted。普通消息发送到延时队列时,消息初始状态 Delayed,经过延时队列的 DelaySeconds 属性值设定的A
11、ctive。延时消息发送到消息队列(普通队列或者延时队列),Delayed,经过消息的DelaySeconds 属性指定的时间后消息状态变成 Active。消息的最长存活时间由创建队列时指定的 MessageRetentionPeriod 属性值决定,超过此时间后消Expired,将被垃圾回收器回收。ActiveTopic主题是发布消息的目的地,发布者可以通过 PublishMessage 接口向主题发布消息。主题属性MaximumMessageSize消息体的最大长度,单位为Byte;- 取值范围:1024 65536Byte(64KB);该属性用于限制发送到队列的消息体最大长度,超过该长度
12、发布消息将失败;LoggingEnabled是否开启日志管理功能;取值范围:True/False;当该属性为True时,MNS详情;CreateTime- 主题的创建时间,从 1970-1-1 00:00:00到现在的秒值;LastModifyTime修改主题属性信息的最近时间,从 1970-1-1 00:00:00 到现在的秒值; MessageRetentionPeriod消息在主题中的最长保留时间,单位为秒;从发送到该主题开始经过此参数指定的时间后,不论消息是否被成功推送给用户都将被删除;MessageCount该主题中消息数目;包含已经被推送给用户的消息,不包含过期被回收的消息;Top
13、icURL标识 Topic 的URL,格式:http:/$AccountId.mns./topics/$TopicNamemns.:MNS 访问域名,Region 是 MNS 部署的区域,用户可以根据应用需要选择不同的地域,具体各区域的访问域名可以在控制台通过 获取地址 操作查看。AccountId:ID,MNSAPIID,查看方法请参快速入门。TopicName:主题的名称,MNSMNSAPIAccountId 在同一个 Region 中的主题名称不能重名。主题消息用户发布到主题的消息;发布消息时可以指定消息体、消息标签和消息额外属性;主题消息的最长保留时间为1天,超过这个时间,不论消息是否
14、成功推送给用户,都将被垃圾回收器回收;消息属性MessageId消息的编号;一个主题中每个消息都有唯一的 MessageId; Message消息正文; MessageMD5消息正文的MD5值; MessageTag消息的标签;当发布消息时指定了消息标签,MNSPublishTime- 消息的发布时间,从 1970-1-1 00:00:00 000 到消息发布时的毫秒值;SubscriptionSubscription 描述一个订阅关系,包括被订阅的主题和接收消息的Endpoint;订阅者通过 Subscribe 接口创建订阅,MNS 根据订阅的描述给用户推送消息,推送的起点是订阅时 Topi
15、c 中最新的消息;订阅创建成功后,MNSEndpointEndpoint,MNS订阅属性Endpoint接收消息的Endpoint;支持类型:HttpEndpoint、QueueEndpoint和MailEndpoint;FilterTag过滤消息的标签;类型:字符串;指定了该属性后,MNS 仅推送消息标签与该属性一致的消息到对应的Endpoint; NotifyStrategy消息推送出现错误时的重试策略;取值范围:BACKOFF_RETRY/EXPONENTIAL_DECAY_RETRY;当推送消息失败时,MNS 将按照该属性指定的重试策略进行重试,超过重试策略的次数后,MNS 将丢弃这条
16、消息,继续推送下一条消息;NotifyStrategy;NotifyContentFormat推送给Endpoint的消息格式;取值范围:XML/SIMPLIFIED;NotifyContentFormat;CreateTime1970-1-1 00:00:001970-1-100:00:00SubscriptionURL标识 Subscription 的 URL 格式:http:/$AccountId.mns./topic/$TopicName/subscriptions/$Subscrip tionNamemns.:MNS 访问域名,Region 是 MNS 部署的区域,用户可以根据应用需
17、要选择不同的区域,具体各区域的访问域名可以在控制台通过 获取地址 操作查看;AccountId:ID,MNSAPIID;TopicName:MNSAPISubscriptionName:表示SubscriptionMNSAPISubscription 的名称。同一个订阅者订阅相同的主题时,SubscriptionName 不能重复。EndpointEndpoint 是用户订阅主题时,指定接收消息的终端地址;当有消息发布到主题时,MNS 会主动将消息推送到对应的 Endpoint; 多个 Subscription 可以指定同一个 Endpoint;HttpEndpointhttpEndpoint
18、;格式:http:/$/uri,支持多级uri;限制:Endpoint的urimns-reserverd-MNShttpEndpoint,用户在Endpoint端处理请求即可;QueueEndpoint以队列的资源描述作为Endpoint;格式:acs:mns:REGION:AccountID:queues/QueueNameTopicRegion同账号的队列中;MNS 直接将消息写入到指定的队列中,用户通过receive message接口读取消息,具体使用方式请参考详情;MailEndpoint以Mail名称作为Endpoint;格式:mail:directmail:MailAddress
19、;MNSmail的形式将消息推送到指定的邮箱中,具体使用方式请参考详情;NotifyStrategyNotifyStrategyMNSEnpointMNS策略描述参数退避重试策略31020BACKOFF_RETRY指数衰减重试重试 176 次,每次重试的间隔时间指数递增至 512秒,总计重试时间为1天;每次重试的具体间隔为:1, 2, 4, 8, 16, 32, 64,128, 256, 512, 512 . 512 秒EXPONENTIAL_DECAY_RETRY(共167个512)NotifyContenFormatNotifyContenFormatMNSEndpoint消息体为XML格
20、式,包含消息正文和消息属性;HttpEndpoint和QueueEndpoint支持该格式;消息示例:TopicOwnerTopicNameSubscriberSubscriptionName6CC4D900CA59A2CD-1-15180534A8F-2000000021:a, 2:bF1E92841751D795AB325861034B5CB55important1449556920975JSON消息体为JSON格式,包含消息正文和消息属性;HttpEndpoint和QueueEndpoint支持该格式;消息示例:TopicOwner:TopicOwner, TopicName:Topic
21、Name, Subscriber:Subscriber, SubscriptionName:SubscriptionName,MessageId:6CC4D900CA59A2CD-1-15180534A8F-200000002,Message:xxxxx, MessageMD5:F1E92841751D795AB325861034B5CB55,MessageTag:important, PublishTime:1449556920975SIMPLIFIED消息体即用户发布的消息,不包含任何属性信息;HttpEndpoint、QueueEndpoint、MailEndpoint均支持该格式;1:
22、a, 2:b消息体示例:1:a, 2:b调用方式请求结构服务地址MNS 服务在多个地域部署,都分别提供了公网访问地址和阿里云私网访问地址。如表所示:区域公网访问地址私网访问地址VPC私网访问地址华北1http(s):/AccountId. - qingdao.aliyuncs.co mhttp:/AccountId.m -qingdao- 暂无华北2http(s):/AccountId. - http:/AccountId.m -beijing- http:/AccountId.m -beijing- internal- 华东1http(s):/AccountId. - hangzhou.al
23、iyuncs.c omhttp:/AccountId.m -hangzhou- http:/AccountId.m -hangzhou- internal- 华东2http(s):/AccountId. - shanghai.aliyuncs.co mhttp:/AccountId.m -shanghai- http:/AccountId.m -shanghai- internal- 华南1http(s):/AccountId. - shenzhen.aliyuncs.cohttp:/AccountId.m -shenzhen- http:/AccountId.m -shenzhen- 亚太(
24、新加坡)http(s):/AccountId. mns.ap-southeast- 1.http:/AccountId.m ns.ap-southeast-1- http:/AccountId.m ns.ap-southeast-1- internal- 美国硅谷http(s):/AccountId. mns.us-west- 1.http:/AccountId.m ns.us-west-1- http:/AccountId.m ns.us-west-1- internal- AccountID 是阿里云注册用户的帐号 ID,在阿里云官网可以查看。为了帮助保护用户的数据安全,MNS在公网提供了
25、Https的接口,只需要把公网访问地址的http:/换成https:/即可。通信协议支持通过 HTTP 协议进行请求通信。请求方法HTTPPUTPOSTGETDELETEHTTP Method队列接口规章节。请求组成向 MNS 发送 HTTP 请求完成某个 API接口操作,发送的请求需要带上正确的请求参数、请求头以及请求正文。请求编码请求及返回结果都使用 UTF-8 字符集进行编码。公共参数参数名称说明选项公共请求头参数名称说明选项Authorization验证字符串,由MNSRequiredContent-LengthHTTP消息体的长度RequiredContent-Type请求内容的MI
26、ME类型,目前请求仅支持 text/xml 格式RequiredContent-MD5HTTP消息体的MD5值, 具体格式请参考/html/rfc 1864OptionalDate请求的构造时间,目前只支持GMTMNSRequiredHost从 阿 里 云 官 网 获 取 AccountId,从 API 文档中获取各 Region MNS 访问地址,格式如下:$AccountI- Required(HTTP/1.1) Optional(HTTP/1.0)x-mns-version调用MNS接口的版本号,当前版本为2015-06-06Required公共返回头参数名称说明Content-Leng
27、thHTTP 消息体返回的长度ConnectionHTTP 连接状态Date响应的返回时间,GMT 时间格式Server请求响应的 MNS 服务器名x-mns-request-id此次 Request 操作的编号x-mns-versionMNS 接口的版本编号,当前版本是2015-06-06返回结果调用 API 服务后返回数据采用统一格式,返回的HTTP状态码为2xx,代表调用成功;返回 4xx 或5xx的HTTP状态码代表调用失败。调用成功返回的数据格式为XML。本文档中的返回示例为了便于用户查看,做了格式化处理,实际返回结果是没有进行换行、缩进等处理的。返回成功XML返回结果包括请求是否成
28、功信息和具体的业务数据。示例如下:错误结果调用接口出错后,将不会返回结果数据,具体的错误信息请参考 错误响应。当调用出错时,HTTP4xx5xxHTTP 和一个您该次请求访问的站点ID:HostId。在调用方找不到错误原因,可以联系阿里云客服,并提供该 HostId 和 RequestId,以便我们尽快帮您解决问题。签名机制Access Key ID和Access Key Secret 由阿里云官方颁发给访问者(可以通过阿里云官方网站申请和管理),Access Key ID;Access Key SecretMNS 服务会对每个访问的请求进行验证,每个向 MNS 提交的请求,都需要在请求中包含
29、签名(Signature)信息。MNSAccessKeyIDAccessKeySecret 将拒绝处理这次请求,并返回 HTTP403用户可以在 HTTP 请求中增加 Authorization(授权)的 Head 来包含签名信息,表明这个消息已被授权。Signature = base64(hmac-sha1(VERB + n+ CONTENT-MD5 + n+ CONTENT-TYPE + nSignature = base64(hmac-sha1(VERB + n+ CONTENT-MD5 + n+ CONTENT-TYPE + n+ DATE + n+ DATE + n+ Canonic
30、alizedMNSHeaders+ CanonicalizedResource)VERBHTTP的Method(如示例中:PUT)Content-Md5MD5值CONTENT-TYPEDATE 表示此次操作的时间,不能为空,目前只支持GMT格式,如果请求时间和MNS服务器时间相差超过15分钟,MNS会判定此请求不合法,返回400错误,错误信息及错误码详见本文档第5部分。(如示例中:Thu, 17 Mar 2012 18:49:58 GMT)CanonicalizedMNSHeadershttp中的x-mns-开始的字段组合。(见下文注意事项)CanonicalizedResource表示htt
31、p所请求资源的URI(统一资源标识符)。(如示例中:/queues/$queueName?metaOverride=true)注意:CanonicalizedMNSHeaders(即x-mns-开头的head)在签名验证前需要符合以下规范:head的名字需要变成小写head自小到大排序分割headname和value的冒号前后不能有空格每个Head之后都有一个n,如果没有以x-mns-开头的head,则在签名时CanonicalizedMNSHeaders就设置为空其他:用来签名的字符串为UTF-8格式。签名的方法用RFC2104。中定义的HMAC-SHA1方法,其中Key为AccessKey
32、Secret。content-type和content-md5在请求中不是必须的,没有情况下,请使用代替。PUT /queues/$queueName?metaOverride=true HTTP/1.1 Host: $AccountIDate: Wed, 08 Mar 2012 12:00:00 GMTPUT /queues/$queueName?metaOverride=true HTTP/1.1 Host: $AccountIDate: Wed, 08 Mar 2012 12:00:00 GMTAuthorization: MNS 15B4D3461F177624206A:xQE0diM
33、bLRepdf3YB+FIEXAMPLE=60102412030如果传入的AccessKey Id不存在或inactive,返回403 Forbidden。返回示例:Content-Type: text/xml Content-Length: 314Date: Wed, 18Mar 2012 08:04:06 GMTx-mns-request-id: 512B2A634403E52B1956133EContent-Type: text/xml Content-Length: 314Date: Wed, 18Mar 2012 08:04:06 GMTx-mns-request-id: 512B2
34、A634403E52B1956133EAccessIDAuthErrorAccessID authentication fail, please check your AccessID and retry.512B2A634403E52B1956133EContent-Type: text/xml Content-Length: 274Date: Wed, 18Mar 2012 08:04:06 GMTx-mns-request-id: 512B2A634403E52B1956133EContent-Type: text/xml Content-Length: 274Date: Wed, 18
35、Mar 2012 08:04:06 GMTx-mns-request-id: 512B2A634403E52B1956133EInvalidArgumentDate header is invalid or missing.7E1A5CF258F535884403E533Content-Type: text/xml Content-Length: 283Date: Wed, 11 May 2011 09:01:51 GMTx-mns-request-id: 512B2A634403E52B1956133EContent-Type: text/xml Content-Length: 283Dat
36、e: Wed, 11 May 2011 09:01:51 GMTx-mns-request-id: 512B2A634403E52B1956133ETimeExpiredThe http request you sent is expired.512B2A634403E52B1956133EHttp(s) Endpoint用户可以通过推送请求Header中的 x-mns-signing-cert-url 获取签名证书,并根据相应的方法来验证该请求是否由MNS系统发出,防止恶意请求对用户造成负面影响。MNSHeader,AuthorizationMNSSHA1-RSA第一步:获取X509证书在
37、MNS 发送给 Endpoint 的 http 请求 Header 中,x-mns-signing-cert-url 指定了签名证书的地址(Base64 编码),用户需要通过 Base64 解码,获取该签名文件 URL 地址,再从中提取出签名的公钥。VERB + n+ CONTENT-MD5 + nVERB + n+ CONTENT-MD5 + n+ CONTENT-TYPE + n+ DATE + n+ CanonicalizedMNSHeaders+ CanonicalizedResourceVERBHTTP的MethodCONTENT-MD5MD5值CONTENT-TYPE全小写DATE
38、GMT格式CanonicalizedMNSHeadershttpHeaderx-mns-开始的字段组合(见下文注意事项)CanonicalizedResource表示 http 请求的相对地址,不能为空POST ZDgxNjY5ZjFlMDQ5MGM0YWMwMWE5ODlmZDVlYmQxYjI=text/xml;charset=utf-8Wed, 25 May 2016 10:46:14 GMTx-mns-request-id:57458276F0E3D56D7C00054B x-mns-signing-cert-POST ZDgxNjY5ZjFlMDQ5MGM0YWMwMWE5ODlmZ
39、DVlYmQxYjI=text/xml;charset=utf-8Wed, 25 May 2016 10:46:14 GMTx-mns-request-id:57458276F0E3D56D7C00054B x-mns-signing-cert-url:aHR0cDovL21uc3Rlc3Qub3NzLWNuLWhhbmd6aG91LmFsaXl1bmNzLmNvbS94NTA5X3B1YmxpY19jZXJ0aWZpY2 F0ZS5wZW0=x-mns-version:2015-06-06/notifications第三步:Authorization 解密对Authorization 签名字
40、段进行 Base64 Decode 解码后,使用从第一步从证书中提取的公钥对其进行解密;第四步:认证比较第二步生成的待签名字符串与第三步解密的结果是否一致。如果一致,则表明请求来自MNS,访问合 法。注意事项CanonicalizedMNSHeaders(即x-mns-开头的head)在签名验证前需要符合以下规范:headheadheadnamevalue每个Head之后都有一个n,如果没有以x-mns-开头的head,则在签名时CanonicalizedMNSHeaders就设置为空其他UTF-8签名的方法用 RFC 3447 ( HYPERLINK /html/rfc3447)%E4%B8
41、%AD%E5%AE%9A%E4%B9%89%E7%9A%84 /html/rfc3447)中定义的 sha1WithRSAEncryption 方法;Base64base64public class SignDemo privatepublic class SignDemo privateBooleanauthenticate(Stringmethod,Stringuri,Mapheaders) try/获取证书的URLif (!headers.containsKey(x-mns-signing-cert-url) System.out.println(x-mns-signing-cert-u
42、rl Header not found); return false;String cert = headers.get(x-mns-signing-cert-url); if (cert.isEmpty() System.out.println(x-mns-signing-cert-url empty); return false;cert = new String(Base64.decodeBase64(cert); System.out.println(x-mns-signing-cert-url:t + cert);/根据URL获取证书,并从证书中获取公钥URL url = new U
43、RL(cert);HttpURLConnectionconn=(HttpURLConnection)url.openConnection(); DataInputStreamin=newDataInputStream(conn.getInputStream();CertificateFactory cf = CertificateFactory.getInstance(X.509); Certificate c = cf.generateCertificate(in);PublicKey pk = c.getPublicKey();/获取待签名字符串String str2sign = getS
44、ignStr(method, uri, headers); System.out.println(String2Sign:t + str2sign);/对Authorization字段做Base64解码String signature = headers.get(Authorization);byte decodedSign = Base64.decodeBase64(signature);/认证java.security.Signature signetcheck = java.security.Signature.getInstance(SHA1withRSA); signetcheck.
45、initVerify(pk);signetcheck.update(str2sign.getBytes(); Boolean res = signetcheck.verify(decodedSign); return res; catch (Exception e) e.printStackTrace(); return false;privateStringgetSignStr(Stringmethod,Stringuri,Mapheaders) StringBuilder sb = newStringBuilder();sb.append(method); sb.append(n);sb.
46、append(safeGetHeader(headers, Content-md5); sb.append(n);sb.append(safeGetHeader(headers, Content-Type); sb.append(n);sb.append(safeGetHeader(headers, Date); sb.append(n);List tmp = new ArrayList();for (Map.Entry entry : headers.entrySet() if (entry.getKey().startsWith(x-mns-) tmp.add(entry.getKey()
47、 + : + entry.getValue();Collections.sort(tmp);for (String kv : tmp) sb.append(kv); sb.append(n);sb.append(uri); return sb.toString();privateStringsafeGetHeader(Mapheaders,Stringname) if (headers.containsKey(name)return headers.get(name); else return ;return ;public static void main(String args) Sign
48、Demo sd = new SignDemo();Map headers = new HashMap(); headers.put(Authorization,Mko2Azg9fhCw8qR6G7AeAFMyzjO9qn7LDA5/t9E+6X5XURXTqBUuhpK+K55UNhrnlE2UdDkRrwDxsaDP5ajQdg=);headers.put(Content-md5, M2ViOTE2ZDEyOTlkODBjMjVkNzM4YjNhNWI3ZWQ1M2E=); headers.put(Content-Type, text/xml;charset=utf-8);headers.p
49、ut(Date, Tue, 23 Feb 2016 09:41:06 GMT); headers.put(x-mns-request-id, 56CC2932F0E3D5BD530685CB); headers.put(x-mns-signing-cert-url,aHR0cDovL21uc3Rlc3Qub3NzLWNuLWhhbmd6aG91LmFsaXl1bmNzLmNvbS94NTA5X3B1YmxpY19jZXJ0aWZpY2F 0ZS5wZW0=);headers.put(x-mns-version, 2015-06-06);Boolean res = sd.authenticate
50、(POST, /notifications, headers); System.out.println(Authenticate result: + res);队列接口规范RESTful API概述Queue:CreateQueue,DeleteQueue,ListQueue,GetQueueAttributes,SetQueueAttributes.Message:SendMessage,BatchSendMessage,ReceiveMessage,BatchReceiveMessage,PeekMess age,BatchPeekMessage,DeleteMessage,BatchDe
51、leteMessage,ChangeMessageVisibility.CreateQueue描述该接口用于创建一个新的队列。队列名称是一个不超过256个字符的字符串,必须以字母或数字为首字符,剩余部分可以包含字母、数字和横划线(-)。RequestRequest 的构造主要由以下几个部分组成:请求行PUT /queues/$queueName HTTP/1.1特有Request Header无,请参考 调用方式/公共参数Request BodyRequest Body为XML格式,XML中包含创建 Queue 的属性,这些属性都为可选属性。参数名称说明参数值DelaySecondsQueue
52、。0-604800秒(7天)范围内某个整数值,默认值为0MaximumMessageSize发送到该Queue的消息体的最大长度,单位为byte。1024(1KB)-65536(64KB)范围内的某个整数值,默认值为65536(64KB)。MessageRetentionPeriodQueue60 (1分钟)-1296000 (15 天)范围内某个整数值,默认值345600 (4 天)VisibilityTimeout消息从该 Queue 中取出后从Active状态变成Inactive状态后的持续时间,单位为秒。1-43200(12小时)范围内的某个值整数值,默认为30(秒)PollingWa
53、itSecondsQueueQueueReceiveMessage 请求最长的等待时间,单位为秒。0-30秒范围内的某个整数值,默认为0(秒)LoggingEnabled是否开启日志管理功能,True表示启用,False表示停用True/False,默认为False说明:QueuePollingWaitSeconds,Queue(Batch)ReceiveMessage 等待状态,在 PollingWaitSeconds 期间一直保持无消息,则会返MessageNotExist;QueueReceiveMessage 请求,返回消息。Response返回消息由返回状态行,HTTP头和消息体三部
54、分组成。HTTP StatusCodeHTTP/1.1 201 Created在同一个所有者名下的队列不能重名,当出现创建重名队列时,如果创建队列的属性与已经存在的队列属 性相同,返回204(NoContent);否则返回409(Conflict)。特有ResponseHeader参数名称说明Location返回创建的 QueueURL,格式如下:http:/$AccountId.mns.aliyuncs.c om/queues/$queueNameResponseBody 无Special Error错误代码错误消息状态码QueueAlreadyExistThe queue you want
55、 to create is already exist.409InvalidArgumentThe value of Element should between Low and High seconds/bytes.400PUT /queues/$queueName HTTP/1.1请求示例:PUT /queues/$queueName HTTP/1.1Host: $AccountI Host: $AccountI Date: Wed, 08 Mar 2012 12:00:00 GMTx-mns-version: 2015-06-06Authorization:MNS 15B4D3461F1
56、77624206A:xQE0diMbLRepdf3YB+FIEXAMPLE=60655361209600TrueHTTP/1.1 201 Createdx-mns-request-id:512B2A634403E52B1956133E HTTP/1.1 201 Createdx-mns-request-id:512B2A634403E52B1956133E x-mns-version: 2015-06-06Location: http:/$AccountI/queues/$queueNameSetQueueAttributes描述该接口用于修改消息队列的属性。RequestRequest的构造
57、主要由以下几个部分组成: 请求行PUT /queues/$queueName?metaoverride=true HTTP/1.1URI参数metaoverride=true将会修改消息队列的属性特有Request Header无,请参考 调用方式/公共参数Request BodyRequest Body 为 XML 格式,XML 中包含创建 Queue 的属性,这些属性都为可选属性。参数名称说明参数值DelaySeconds发送到该 Queue 的所有消息默认将以 DelaySeconds 参数指定的秒数延后可被消费,单位为秒。0-604800秒(7天)范围内某个整数值MaximumMess
58、ageSize发送到该 Queue 的消息体的最大长度,单位为 Byte。1024(1KB)-65536(64KB)范围内的某个整数值MessageRetentionPeriodQueue60 (1分钟)-1296000 (15 天)范围内某个整数值VisibilityTimeout消息从该 Queue 中取出后从Active 状态变成 Inactive 状态后的持续时间,单位为秒。1-43200(12小时)范围内的某个值整数值PollingWaitSeconds当Queue消息量为空时,针对该 Queue 的 ReceiveMessage 请求最长的等待时间,单位为秒。0-30秒范围内的某个
59、整数值LoggingEnabled是否开启日志管理功能,True表示启用,False表示停用True/FalseResponse返回消息由返回状态行,HTTP头和消息体三部分组成。HTTP Status CodeHTTP/1.1 204 No Content特有Response Header无,请参考 调用方式/公共参数Response Body 无Special Error错误代码错误消息状态码InvalidArgumentThe value of Element should between Low and High seconds/bytes.400QueueNotExistThe qu
60、eue name you provided is not exist.404PUT /queues/$queueName?Metaoverride=true HTTP/1.1 Host: $AccountIPUT /queues/$queueName?Metaoverride=true HTTP/1.1 Host: $AccountIDate: Wed, 08 Mar 2012 12:00:00 GMTx-mns-version: 2015-06-06Authorization: MNS 15B4D3461F177624206A:xQE0diMbLRepdf3YB+FIEXAMPLE=6010
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 课题申报参考:进一步全面深化经济体制改革研究
- 二零二五版车辆抵押反担保车辆租赁管理协议3篇
- 二零二五年度新型节能楼顶广告牌拆除与改造升级协议3篇
- 2025版建筑材料销售结算合同范本2篇
- 2025年度苗木种植与乡村旅游开发合同3篇
- 二零二五年度彩钢屋面防水补漏工程合同2篇
- 二零二五年度出口交易磋商与合同订立策略指南4篇
- 二零二五年度安全生产教育培训机构合作协议2篇
- 2025年度美容院员工薪酬福利及绩效管理合同
- 2025年度城市绿化工程监理委托咨询服务协议3篇
- 2024年安全教育培训试题附完整答案(夺冠系列)
- 神农架研学课程设计
- 文化资本与民族认同建构-洞察分析
- 2025新译林版英语七年级下单词默写表
- 《锡膏培训教材》课件
- 断绝父子关系协议书
- 2021-2022学年四川省成都市武侯区部编版四年级上册期末考试语文试卷(解析版)
- 中国传统文化服饰文化
- 大气污染控制工程 第四版
- 浅析商务英语中模糊语言的语用功能
- 工程勘察资质分级标准和工程设计资质分级标准
评论
0/150
提交评论