开发者社区 问答 正文

API如何设置队列属性?



基本信息

NameValue
[backcolor=transparent]APISetQueueAttributes
[backcolor=transparent]RAM授权操作mns:SetQueueAttributes
[backcolor=transparent]资源acs:mns:$region:$accountid:/queues/$queueName


描述


该接口用于修改消息队列的属性。

Request


Request的构造主要由以下几个部分组成:

  • 请求行

    PUT /queues/$queueName?metaoverride=true HTTP/1.1

  • URI参数

    metaoverride=true将会修改消息队列的属性

  • 特有Request Header

    无,请参考 [backcolor=transparent]调用方式/公共参数

  • Request Body

    Request Body 为 XML 格式,XML 中包含创建 Queue 的属性,这些属性都为可选属性。
参数名称说明参数值
DelaySeconds发送到该 Queue 的所有消息默认将以 DelaySeconds 参数指定的秒数延后可被消费,单位为秒。0-604800秒(7天)范围内某个整数值
MaximumMessageSize发送到该 Queue 的消息体的最大长度,单位为 Byte。1024(1KB)-65536(64KB)范围内的某个整数值
MessageRetentionPeriod消息在该 Queue 中最长的存活时间,从发送到该队列开始经过此参数指定的时间后,不论消息是否被取出过都将被删除,单位为秒。60 (1分钟)-1296000 (15 天)范围内某个整数值
VisibilityTimeout消息从该 Queue 中取出后从 Active 状态变成 Inactive 状态后的持续时间,单位为秒。1-43200(12小时)范围内的某个值整数值
PollingWaitSeconds当Queue消息量为空时,针对该 Queue 的 ReceiveMessage 请求最长的等待时间,单位为秒。0-30秒范围内的某个整数值
LoggingEnabled是否开启日志管理功能,True表示启用,False表示停用True/False


Response


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

  • HTTP Status Code

    HTTP/1.1 204 No Content

  • 特有Response Header

    无,请参考 [backcolor=transparent]调用方式/公共参数

  • Response Body



Special Error

错误代码错误消息状态码
InvalidArgumentThe value of Element should between Low and High seconds/bytes.400
[tr=rgb(239, 251, 255)][td]QueueNotExist The queue name you provided is not exist.404
[backcolor=transparent]请求示例:
[backcolor=transparent]

展开
收起
轩墨 2017-10-24 15:22:24 1642 分享 版权
阿里云 AI 助理回答

基于您提供的信息,这是关于阿里云消息服务(MNS)中修改消息队列属性(SetQueueAttributes)接口的详细说明。下面我将用更简洁的方式概述如何使用这个API以及需要注意的关键点。

API简介

功能:此接口允许用户修改已创建的消息队列的属性,比如消息的延迟时间、最大消息大小、消息保留周期等。

请求构造

  • HTTP Method: PUT
  • 请求URL: /queues/$queueName?metaoverride=true,其中$queueName是您要修改属性的队列名称,metaoverride=true表示允许覆盖现有队列属性。
  • Request Headers: 无需特定的Header,遵循阿里云通用的调用方式和公共参数设置。
  • Request Body: XML格式,包含可选的队列属性,例如:

    <Queue>
    <DelaySeconds>30</DelaySeconds>
    <MaximumMessageSize>10240</MaximumMessageSize>
    <MessageRetentionPeriod>86400</MessageRetentionPeriod>
    <VisibilityTimeout>30</VisibilityTimeout>
    <PollingWaitSeconds>5</PollingWaitSeconds>
    <LoggingEnabled>true</LoggingEnabled>
    </Queue>
    

参数说明

  • DelaySeconds: 消息延时时间,默认为0秒,最大7天。
  • MaximumMessageSize: 消息最大长度,默认1KB至64KB。
  • MessageRetentionPeriod: 消息在队列中的最长存活时间,默认1分钟至15天。
  • VisibilityTimeout: 消费者获取消息后其变为不可见的时间,默认1秒至12小时。
  • PollingWaitSeconds: 队列为空时,ReceiveMessage操作的最大等待时间,默认0秒至30秒。
  • LoggingEnabled: 是否开启日志记录功能,布尔值。

响应

  • HTTP Status Code: 成功时返回204 No Content,表示请求成功且无响应体。
  • Response Body: 无内容。

错误处理

  • InvalidArgument: 提供的参数值不在允许的范围内,状态码400。
  • QueueNotExist: 指定的队列不存在,状态码404。

示例请求

一个完整的请求示例可能如下所示(注意实际请求需要通过HTTP客户端发送,并且XML内容需正确格式化):

PUT /queues/MyTestQueue?metaoverride=true HTTP/1.1
Host: mns.aliyuncs.com
Date: Thu, 01 Jan 2020 00:00:00 GMT
Authorization: (此处填写签名)
Content-Type: application/xml

<Queue>
  <DelaySeconds>30</DelaySeconds>
  <MaximumMessageSize>10240</MaximumMessageSize>
  <MessageRetentionPeriod>86400</MessageRetentionPeriod>
  <VisibilityTimeout>30</VisibilityTimeout>
  <PollingWaitSeconds>5</PollingWaitSeconds>
  <LoggingEnabled>true</LoggingEnabled>
</Queue>

请确保在实际调用时,根据阿里云官方文档完成认证签名过程,并替换示例中的日期、签名等信息。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答