使用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参数指定的秒数延后可被消费,单位为秒。 0-604800秒(7天)范围内某个整数值,默认值为0
    MaximumMessageSize 发送到该Queue的消息体的最大长度,单位为Byte。 1024(1 KB)-65536(64 KB)范围内的某个整数值,默认值为65536(64 KB)。
    MessageRetentionPeriod 消息在该Queue中最长的存活时间,从发送到该队列开始经过此参数指定的时间后,不论消息是否被取出过都将被删除,单位为秒。 60(1分钟)-604800(7天)范围内某个整数值,默认值259200(3 天)
    VisibilityTimeout 消息从该Queue中取出后从Active状态变成Inactive状态后的持续时间,单位为秒。 1-43200(12小时)范围内的某个值整数值,默认为30(秒)
    PollingWaitSeconds 当Queue中没有消息时,针对该Queue的ReceiveMessage请求最长的等待时间,单位为秒。 0-30秒范围内的某个整数值,默认为0(秒)
    LoggingEnabled 是否开启日志管理功能,取值说明如下:
    • True:表示启用;
    • False:表示停用。
    True/False,默认为False
    说明
    • 只要Queue设置了PollingWaitSeconds,针对该Queue的所有(Batch)ReceiveMessage请求在队列无消息时,都将默认进入到Polling等待状态(即长轮询),在PollingWaitSeconds期间一直保持无消息,则会返回MessageNotExist;如果在此期间有新的消息进入到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