使用CreateQueue接口来创建一个新的队列。

Name Value
API CreateQueue
RAM授权操作 mns:CreateQueue
资源 acs:mns:$region:$accountid:/queues/$queueName

描述

队列名称是一个不超过255个字符的字符串,必须以字母或数字为首字符,剩余部分可以包含字母、数字和连字符(-)。

队列实例默认上限为1000个,如有特殊需求可提交工单提高队列实例上限值。

Request

Request由以下几个部分组成:

  • 请求行

    PUT /queues/$queueName HTTP/1.1

  • 特有Request Header

    无,请参见公共参数

  • Request Body
    Request Body为XML格式,XML中包含创建队列的属性,这些属性都为可选属性。
    参数名称 说明 参数值
    DelaySeconds 发送到该Queue的所有消息默认将以DelaySeconds参数指定的秒数延后可被消费,单位为秒。 0s~604800s(7天)的某个整数值,默认值为0s。
    MaximumMessageSize 发送到该Queue的消息体的最大长度,单位为Byte。 1024(1 KB)~65536(64 KB)的某个整数值,默认值为65536(64 KB)。
    MessageRetentionPeriod 消息在该Queue中最长的存活时间,从发送到该队列开始经过此参数指定的时间后,不论消息是否被取出过都将被删除,单位为秒。 60s(1分钟)~604800s(7天)二点某个整数值,默认值345600s(4 天)。
    VisibilityTimeout 消息从该Queue中取出后从Active状态变成Inactive状态后的持续时间,单位为秒。 1s~43200s(12小时)的某个值整数值,默认为30s。
    PollingWaitSeconds 当Queue中没有消息时,针对该Queue的ReceiveMessage请求最长的等待时间,单位为秒。 0s~30s的某个整数值,默认为0s。
    LoggingEnabled 是否开启日志管理功能。
    • True:启用。
    • False:停用。
    默认为False。
    说明
    • 只要Queue设置了PollingWaitSeconds,针对该Queue的所有(Batch)ReceiveMessage请求在队列无消息时,都将默认进入到Polling等待状态(即长轮询)。如果在PollingWaitSeconds时间内一直保持无消息,则返回MessageNotExist;如果在PollingWaitSeconds时间内有新的消息进入到Queue中,则唤醒相应的ReceiveMessage请求,返回消息。
    • 进入长轮询后,建议您降低长轮询的并发数。目前MNS服务端会根据用户的长轮询数量、长轮询等待时间、访问IP数量等因素动态设置长轮询防攻击并发上限值。当队列无消息时,超过长轮询上限值的请求将无法进入到监听状态,并直接返回404MessageNotExist(按请求量正常计费)。如果您有临时提升长轮询上限值的需求,请及时提交工单,避免产生不必要的费用支出。

Response

返回消息由返回状态行、HTTP头和消息体三部分组成:

  • HTTP Status Code

    HTTP/1.1 201 Created

    在同一个所有者名下的队列不能重名,当出现创建重名队列时,如果创建队列的属性与已经存在的队列属性相同,返回204(No Content);否则返回409(Conflict)。

  • 特有Response Header
    参数名称 说明
    Location 返回创建的QueueURL,格式如下:http://$AccountId.mns.<Region>.aliyuncs.com/queues/$queueName
  • Response Body

    无。

示例

请求示例:

PUT  /queues/$queueName HTTP/1.1
Host: $AccountId.mns.cn-hangzhou.aliyuncs.com
Date: Wed, 08 Mar 2012 12:00:00 GMT
x-mns-version: 2015-06-06
Authorization:MNS 15B4D3461F177624206A:xQE0diMbLRepdf3YB+FIEXAMPLE=

<?xml version="1.0" encoding="UTF-8"?>
<Queue xmlns="http://mns.aliyuncs.com/doc/v1/">
    <VisibilityTimeout>60</VisibilityTimeout>
    <MaximumMessageSize>65536</MaximumMessageSize>
    <MessageRetentionPeriod>1209600</MessageRetentionPeriod>
    <LoggingEnabled>True</LoggingEnabled>
</Queue>            

返回示例:

HTTP/1.1 201 Created
x-mns-request-id:512B2A634403E52B1956133E
x-mns-version: 2015-06-06
Location: http://$AccountId.mns.cn-hangzhou.aliyuncs.com/queues/$queueName         

Special error

错误码 错误信息 状态码
QueueAlreadyExist The queue you want to create is already exist. 409
InvalidArgument The value of Element should between Low and High seconds/bytes. 400
QueueNumExceededLimit The number of the queues you created has excceeded the limit. 400