BatchSendMessage
調(diào)用BatchSendMessage接口批量發(fā)送消息到指定的隊(duì)列。
授權(quán)信息
默認(rèn)僅限阿里云賬號(hào)使用本接口,RAM用戶只有在被授予了相關(guān)API操作權(quán)限后方可使用。本接口的授權(quán)信息如下表所示。更多信息,請(qǐng)參見授權(quán)策略和示例。
Name | Value |
API | BatchSendMessage |
RAM授權(quán)操作 | mns:BatchSendMessage |
資源 | acs:mns:$region:$accountid:/queues/$queueName/messages |
使用說明
該接口用于批量發(fā)送消息到指定的隊(duì)列,一次BatchSendMessage最多發(fā)送16條消息(一次Batch請(qǐng)求的消息總大小不得超過64 KB)。普通消息發(fā)送到隊(duì)列立即被消費(fèi)者消費(fèi),如果生產(chǎn)者發(fā)送一個(gè)消息不想立即被消費(fèi)者消費(fèi)(典型的使用場(chǎng)景為定期任務(wù)),生產(chǎn)者可以在發(fā)送消息時(shí)設(shè)置
DelaySeconds
參數(shù)。發(fā)送帶
DelaySeconds
參數(shù)值大于0的消息初始狀態(tài)為Delayed,此時(shí)消息不能被消費(fèi)者消費(fèi),只有等DelaySeconds
時(shí)間后消息變成Active狀態(tài)后才可消費(fèi)。發(fā)送消息時(shí)指定DelaySeconds
參數(shù)的優(yōu)先級(jí)高于延時(shí)消息隊(duì)列的DelaySeconds
屬性,即兩個(gè)DelaySeconds
屬性設(shè)置的值不同的時(shí)候以發(fā)送消息時(shí)指定的值為準(zhǔn)。使用BatchSendMessage接口時(shí),BatchSendMessage的QPS=BatchSendMessage每秒實(shí)際請(qǐng)求次數(shù)×接口中的消息條數(shù)。例如:BatchSendMessage接口1秒中實(shí)際請(qǐng)求次數(shù)是100,接口中包含10條消息,則占用單個(gè)隊(duì)列QPS=100×10=1000。
當(dāng)您調(diào)用API發(fā)送消息時(shí),請(qǐng)事先將消息體進(jìn)行Base64編碼,以免存在特殊字符導(dǎo)致不能正常使用。
請(qǐng)求消息
請(qǐng)求消息由請(qǐng)求行、HTTP頭和消息體三部分組成:
請(qǐng)求行
POST /queues/$queueName/messages HTTP/1.1
特有Request Header
無。
Request Body
Request Body為XML格式,其中包含多條創(chuàng)建Message的屬性。
參數(shù)名稱
類型
是否必選
示例值
描述
MessageBody
String
是
This is test message 1.
消息正文。
DelaySeconds
Integer
否
60
消息發(fā)送后,經(jīng)過DelaySeconds設(shè)置的時(shí)間后可被消費(fèi)。
取值范圍:0~604800,單位為秒。
默認(rèn)值:0。
返回消息
返回消息由返回狀態(tài)行、HTTP頭和消息體三部分組成:
HTTP Status Code
HTTP/1.1 201 Created
特有Response Header
無。
Response Body
Response Body為XML格式,返回多條Message的MessageId和MessageBodyMD5子元素。
參數(shù)名稱
類型
示例值
描述
MessageId
String
5F290C926D472878-2-14D9529A8FA-20000****
消息編號(hào),在一個(gè)隊(duì)列中唯一。
MessageBodyMD5
String
C5DD56A39F5F7BB8B3337C6D11B6****
消息正文的MD5值。
示例
請(qǐng)求示例:
POST /queues/$queueName/messages HTTP/1.1
Host: $AccountId.mns.cn-hangzhou.aliyuncs.com
Date: Wed, 18 Mar 2012 12:00:00 GMT
Content-Length:500
Content-Type:text/xml;charset=utf-8
x-mns-version: 2015-06-06
Authorization: MNS 15B4D3461F177624206A:xQE0diMbLRepdf3YB+FIEXA****
<?xml version="1.0" encoding="UTF-8"?>
<Messages xmlns="http://mns.aliyuncs.com/doc/v1/">
<Message>
<MessageBody>This is test message 1.</MessageBody>
<DelaySeconds>60</DelaySeconds>
<Priority>1</Priority>
</Message>
<Message>
<MessageBody>This is test message 2.</MessageBody>
<DelaySeconds>60</DelaySeconds>
<Priority>1</Priority>
</Message>
</Messages>
返回示例:
正常發(fā)送所有消息
HTTP/1.1 201 Created Content-Length:120 Content-Type:text/xml;charset=utf-8 x-mns-request-id:512B2A634403E52B1956**** x-mns-version: 2015-06-06 <?xml version="1.0" encoding="UTF-8"?> <Messages xmlns="http://mns.aliyuncs.com/doc/v1/"> <Message> <MessageId>5F290C926D472878-2-14D9529A8FA-20000****</MessageId> <MessageBodyMD5>C5DD56A39F5F7BB8B3337C6D11B6****</MessageBodyMD5> </Message> <Message> <MessageId>5F290C926D472878-2-14D9529A8FA-20000****</MessageId> <MessageBodyMD5>377AC5283D8765C9CEE4E0EA353D****</MessageBodyMD5> </Message> </Messages>
只發(fā)送了部分消息
HTTP/1.1 500 Content-Length:120 Content-Type:text/xml;charset=utf-8 x-mns-request-id:512B2A634403E52B1956**** x-mns-version: 2015-06-06 <?xml version="1.0" encoding="UTF-8"?> <Messages xmlns="http://mns.aliyuncs.com/doc/v1/"> <Message> <MessageId>5F290C926D472878-2-14D9529A8FA-20000****</MessageId> <MessageBodyMD5>C5DD56A39F5F7BB8B3337C6D11B6****</MessageBodyMD5> </Message> <Message> <MessageId>5F290C926D472878-2-14D9529A8FA-20000****</MessageId> <MessageBodyMD5>377AC5283D8765C9CEE4E0EA353D****</MessageBodyMD5> </Message> <Message> <ErrorCode>InternalError</ErrorCode> <ErrorMessage>Internal error.</ErrorMessage> </Message> </Messages>
錯(cuò)誤碼
錯(cuò)誤碼 | 錯(cuò)誤信息 | HTTP狀態(tài)碼 | 描述內(nèi)容 |
QueueNotExist | The queue name you provided is not exist. | 404 | 隊(duì)列不存在,請(qǐng)先創(chuàng)建隊(duì)列。 |
MalformedXML | The XML you provided was not well-formed. | 400 | XML結(jié)構(gòu)異常。 |
InvalidArgument | The value of Element should between Low and High seconds/bytes. | 400 | 參數(shù)值非法,請(qǐng)根據(jù)提示調(diào)整。 |