全部产品
存储与CDN 数据库 安全 应用服务 数加·人工智能 数加·大数据基础服务 互联网中间件 视频服务 开发者工具 解决方案 物联网 钉钉智能硬件
消息服务

Message操作

更新时间:2017-06-07 13:26:11

描述

本接口用于发送消息到指定的消息队列,普通消息发送到消息队列随即可被消费者消费。但是如果生产者发送一个消息不想马上被消费者消费(典型的使用场景为定期任务),生产者在发送消息时设置DelaySeconds参数就可以达到此目标。发送带DelaySeconds参数值大于0的消息初始状态为Delayed,此时消息不能被消费者消费,只有等DelaySeconds时间后消息变成Active状态后才可消费。

Tip:

发送消息时指定DelaySeconds参数的优先级高于延时消息队列的DelaySeconds属性,即两个DelaySeconds属性设置的值不同时以发送消息时指定的值为准。

Request

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

  • 请求行

    POST /$queueName/messages HTTP/1.1

  • 特有Request Header

    无,请参考公共请求头

  • Request Body

    Request Body为XML格式,其中包含创建Message的属性。

参数名称 说明 参数值
MessageBody 必选,消息正文 UTF-8字符集
DelaySeconds 可选,DelaySeconds指定的秒数延后可被消费,单位为秒 0-604800秒(7天)范围内某个整数值,默认值为0
Priority 可选,指定消息的优先级权值。优先级越高的消息,越容易更早被消费 取值范围1~16(其中1为最高优先级),默认优先级为8

Response

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

  • HTTP Status Code

    HTTP/1.1 201 Created

  • 特有Response Header

    无,请参考公共返回头

  • Response Body

    返回的结果为XML格式,返回Message的MessageId和MessageBodyMD5子元素。

参数名称 说明
MessageId 消息编号,在一个Queue唯一、
MessageBodyMD5 消息正文的MD5值

Special Error

错误代码 错误消息 状态码
QueueNotExist The queue name you provided is not exist. 404
MalformedXML The XML you provided was not well-formed. 400
InvalidArgument The value of Element should between Low and High seconds/bytes. 400

请求示例:

    POST /$queueName/messages HTTP/1.1
    Host: $AccountId.mqs-cn-hangzhou.aliyuncs.com
    Date: Wed, 18 Mar 2012 12:00:00 GMT
    Content-Length:500
    Content-Type:text/xml;charset=utf-8
    x-mqs-version: 2014-07-08
    Authorization: MQS 15B4D3461F177624206A:xQE0diMbLRepdf3YB+FIEXAMPLE

    <?xml version="1.0” encoding=”UTF-8” ?>
    <Message xmlns=”http://mqs.aliyuncs.com/doc/v1/”>
        <MessageBody>Base64 Encoded Result</MessageBody>
        <DelaySeconds>60</DelaySeconds>
        <Priority>1</Priority>
    </Message>

返回头示例:

    HTTP/1.1 201Created
    Connnection:close
    Content-Length:120
    Content-Type:text/xml;charset=utf-8
    x-mqs-request-id:512B2A634403E52B1956133E 
    x-mqs-version:2015-06-06

    <?xml version="1.0” encoding=”UTF-8” ?>
    <Message xmlns=”http://mqs.aliyuncs.com/doc/v1/”>
        <MessageId>5F290C926D472878-2-14D9529A8FA-200000001</MessageId>
        <MessageBodyMD5>C5DD56A39F5F7BB8B3337C6D11B6D8C7</MessageBodyMD5>
    </Message>

ReceiveMessage

描述

本接口用于消费者消费消息队列的消息,ReceiveMessage操作会将取得的消息状态变成Inactive,Inactive的时间长度由Queue属性VisibilityTimeout指定(详见CreateQueue接口)。 消费者在VisibilityTimeout时间内消费成功后需要调用DeleteMessage接口删除该消息,否则该消息将会被重新置为Active,此消息又可被消费者重新消费。

Request

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

  • 请求行

    GET /$queueName/messages?waitseconds=10 HTTP/1.1

  • 特有URI参数

参数名称 说明 选项
waitseconds 本次ReceiveMessage请求最长的Polling等待时间①,单位为秒 可选

说明:

① 如果ReceiveMessage请求附带waitseconds参数,则在Queue无消息时,此次ReceiveMessage请求进入到Polling等待时长为waitseconds;如果未设置waitseconds,则默认使用所属Queue的PollingWaitSeconds属性(参见CreateQueue接口)。

  • 特有Request Header

    无,请参考公共请求头

  • Request Body

Response

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

  • HTTP Status Code

    HTTP/1.1 200 OK

  • 特有Response Header

    无,请参考公共返回头

  • Response Body

    返回的结果为XML格式,返回Message消息正文及消息属性。

参数名称 说明
MessageId 消息编号,在一个Queue中唯一
ReceiptHandle 本次获取消息产生的临时句柄,用于删除和修改处于Inactive消息,NextVisibleTime之前有效。
MessageBody 消息正文
MessageBodyMD5 消息正文的MD5值
EnqueueTime 消息发送到队列的时间,从1970年1月1日0点整开始的毫秒数
NextVisibleTime 下次可被再次消费的时间,从1970年1月1日0点整开始的毫秒数
FirstDequeueTime 第一次被消费的时间,从1970年1月1日0点整开始的毫秒数
DequeueCount 总共被消费的次数
Priority 消息的优先级权值

Special Error

错误代码 错误消息 状态码
QueueNotExist The queue name you provided is not exist. 404
MessageNotExist Message not exist. 404

请求示例:

    GET  /$queueName/messages HTTP/1.1
    Host: $AccountId.mqs-cn-hangzhou.aliyuncs.com
    Date: Wed, 28 May 2012 22:32:00 GMT
    x-mqs-version: 2014-07-08
    Authorization: MQS 15B4D3461F177624206A:xQE0diMbLRepdf3YB+FIEXAMPLE

返回示例:

    HTTP/1.1 200 OK
    Connection:close
    Content-Type=text/xml;charset=utf-8
    Content-Length:500
    x-mqs-request-id:512B2A634403E52B1956133E 
    x-mqs-version:2015-06-06

    <?xml version="1.0” encoding=”UTF-8” ?>
    <Message xmlns=”http://mqs.aliyuncs.com/doc/v1/”>
        <MessageId>5F290C926D472878-2-14D9529A8FA-200000001</MessageId>
        <ReceiptHandle>1-ODU4OTkzNDU5My0xNDMyNzI3ODI3LTItOA==</ReceiptHandle>
        <MessageBodyMD5>C5DD56A39F5F7BB8B3337C6D11B6D8C7</MessageBodyMD5>
        <MessageBody>This is a test message</MessageBody>
        <EnqueueTime>1250700979248</EnqueueTime>
        <NextVisibleTime>1250700799348</NextVisibleTime>
        <FirstDequeueTime>1250700779318</FirstDequeueTime >
        <DequeueCount>1</DequeueCount >
        <Priority>8</Priority>
    </Message>

DeleteMessage

描述

本接口用于删除已经被消费过的消息,消费者需将上次消费后得到的ReceiptHandle 作为参数来定位要删除的消息。本操作只有在NextVisibleTime时刻之前执行才能成功;如果过了NextVisibleTime时刻,消息重新变回Active状态,ReceiptHandle就会失效,删除失败,需重新消费获取新的ReceiptHandle。

Request

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

  • 请求行

    DELETE/$queueName/messages?receiptHandle=<receiptHandle> HTTP/1.1

  • 特有URI参数

参数名称 说明 选项
ReceiptHandle 上次消费后返回的消息ReceiptHandle,详见本文ReceiveMessage接口 Required
  • 特有Request Header 无,请参考共同Request头
  • Request Body 无

Response

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

  • HTTP Status Code

    HTTP/1.1 204 NoContent

  • 特有Response Header

    无,请参考公共返回头

  • Response Body

Special Error

错误代码 错误消息 状态码
QueueNotExist The queue name you provided is not exist. 404
InvalidArgument The value of Element should between Low and High seconds/bytes. 400
ReceiptHandleError The receipt handle you provide is not valid. 400

请求示例:

    DELETE  /$queueName/messages?receiptHandle=MbZj6wDWli+QEauMZc8ZRv37sIW2iJKq3M9Mx/KSbkJ0HTTP/1.1
    Host: $AccountId.mqs-cn-hangzhou.aliyuncs.com
    Date: Wed, 28 May 2012 22:32:00 GMT
    x-mqs-version: 2014-07-08
    Authorization: MQS 15B4D3461F177624206A:xQE0diMbLRepdf3YB+FIEXAMPLE

返回示例:

    HTTP/1.1 204 NoContent
    x-mqs-request-id:512B2A634403E52B1956133E 
    x-mqs-version: 2015-06-06

PeekMessage

描述

本接口用于消费者查看消息,PeekMessage与ReceiveMessage不同,PeekMessage并不会改变消息的状态,即被PeekMessage获取消息后消息仍然处于Active状态,仍然可被查看或消费;而后者操作成功后消息进入Inactive,在VisibilityTimeout的时间内不可被查看和消费。

Request

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

  • 请求行

    GET /$queueName/messages?peekonly=true HTTP/1.1

  • URI参数

    peekonely=true表示这次请求只是去查看队列顶部的消息并不会引起消息的状态改变

  • 特有Request Header

    无,请参考共同Request头

  • Request Body

Response

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

  • HTTP Status Code

    HTTP/1.1 200 OK

  • 特有Response Header

    无,请参考公共返回头

  • Response Body

    返回的结果为XML格式,返回Message消息正文及消息属性。

参数名称 说明
MessageId 消息编号,在一个Queue唯一
MessageBody 消息正文
MessageBodyMD5 消息正文的MD5值
EnqueueTime 消息发送到队列的时间,从1970年1月1日0点整开始的毫秒数
FirstDequeueTime 第一次被消费的时间,从1970年1月1日0点整开始的毫秒数,如果DequeueCount为0,则与消息的EnqueueTime相同
DequeueCount 总共被消费的次数
Priority 消息的优先级权值

Special Error

错误代码 错误消息 状态码
QueueNotExist The queue name you provided is not exist. 404
MessageNotExist Message not exist. 404

请求示例:

    GET  /$queueName/messages?peekonly=true HTTP/1.1
    Host: $AccountId.mqs-cn-hangzhou.aliyuncs.com
    Date: Wed, 28 May 2012 22:32:00 GMT
    x-mqs-version: 2014-07-08
    Authorization: MQS 15B4D3461F177624206A:xQE0diMbLRepdf3YB+FIEXAMPLE

返回示例:

    HTTP/1.1 200 OK
    Connection:close
    Content-Type=text/xml;charset=utf-8
    Content-Length:500
    x-mqs-request-id:512B2A634403E52B1956133E 
    x-mqs-version: 2015-06-06

    <?xml version="1.0" encoding="UTF-8"?>
    <Message xmlns=”http://mqs.aliyuncs.com/doc/v1/”>
        <MessageId>D6D5F7C9C12D14A4-1-14D953EFC72-200000004</MessageId>
        <MessageBodyMD5>F9360F391579E71CA77BC5D50242FCF4</MessageBodyMD5>
        <MessageBody>This is a test message</MessageBody>
        <EnqueueTime>1250700979248</EnqueueTime>
        <FirstDequeueTime>1250700979348</FirstDequeueTime >
        <DequeueCount>5</DequeueCount>
        <Priority>8<Priority>
    </Message>

ChangeMessageVisibility

描述

本接口用于修改被消费过并且还处于的Inactive的消息到下次可被消费的时间,成功修改消息的VisibilityTimeout后,返回新的ReceiptHandle。

Request

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

  • 请求行

    PUT /$queueName/messages?receiptHandle=<receiptHandle>&visibilityTimeout=<visibilitytimeout> HTTP/1.1

  • URI参数

参数名称 说明 选项
ReceiptHandle 上次消费后返回的消息ReceiptHandle,详见ReceiveMessage接口 Required
VisibilityTimeout 从现在到下次可被用来消费的时间间隔,单位为秒 Required
  • 特有Request Header

    无,请参考共同Request头

  • Request Body

Response

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

  • HTTP Status Code

    HTTP/1.1 200 OK

  • 特有Response Header

    无,请参考公共返回头

  • Response Body

参数名称 说明
ReceiptHandle 本次修改消息VisibilityTimeout时间返回的临时句柄,用于删除和修改处于Inactive消息,在NextVisibleTime时刻之前有效。
NextVisibleTime 下次可被再次消费的时间,从1970年1月1日0点整开始的毫秒数。

Special Error

错误代码 错误消息 状态码
QueueNotExist The queue name you provided is not exist. 404
InvalidArgument The value of Element should between Low and High seconds/bytes. 400
MessageNotExist Message not exist. 404

请求示例:

    PUT /queueName/messages
    ?receiptHandle=MbZj6wDWli+QEauMZc8ZRv37sIW2iJKq3M9Mx/KSbkJ0&visibilityTimeout=50 HTTP/1.1
    Host: $AccountId.mqs-cn-hangzhou.aliyuncs.com
    Date: Wed, 28 May 2012 22:32:00 GMT
    x-mqs-version: 2014-07-08
    Authorization: MQS 15B4D3461F177624206A:xQE0diMbLRepdf3YB+FIEXAMPLE

返回示例:

    HTTP/1.1 200OK
    x-mqs-request-id:512B2A634403E52B1956133E 
    x-mqs-version: 2015-06-06

    <?xml version="1.0” encoding=”UTF-8” ?>
    <Message xmlns=”http://mqs.aliyuncs.com/doc/v1/”>
        <ReceiptHandle>TbZj6wDWli+9CEauMZc8ZRv37sIW2iJKq3M9Mx/TS1</ReceiptHandle >
        <NextVisibleTime>1250700979298000</NextVisibleTime>
    </Message>
本文导读目录