本接口用于发送消息到指定的消息队列。普通消息发送到消息队列随即可被消费。如果生产者发送一个消息不想立即被消费者消费(典型的使用场景为定期任务),那么可以在发送消息时设置DelaySeconds大于0。此时消息进入队列状态为Delayed,不能被消费者消费,到DelaySeconds设置的时间后消息变成Active状态才可以被消费。
Request
Request的构造主要由以下几个部分组成:
- 请求行
POST /$queueName/messages HTTP/1.1
- 特有Request Header
无,请参见公共参数。
- Request Body
Request Body为XML格式,其中包含创建Message的属性。
参数名称 说明 参数值 MessageBody 必选,消息正文。 UTF-8字符集。 DelaySeconds 可选,DelaySeconds指定的秒数延后可被消费,单位为秒。 0s~604800s(7天)范围内某个整数值,默认值为0s。 Priority 可选,指定消息的优先级权值。优先级越高的消息,越容易更早被消费。 取值范围1~16(其中1为最高优先级),默认优先级为8。 说明 发送消息时指定DelaySeconds优先级高于延时消息队列的DelaySeconds属性,即两个DelaySeconds属性设置的值不同时以发送消息时指定的值为准。
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 Connection: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>