开发者社区> 问答> 正文

API如何批量发送消息?



基本信息

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


描述


该接口用于批量发送消息到指定的队列,一次 BatchSendMessage 最多发送16条消息(一次batch请求的消息总大小不得超过64K字节)。普通消息发送到队列随即可被消费者消费,如果生产者发送一个消息不想马上被消费者消费(典型的使用场景为定期任务),生产者在发送消息时设置 DelaySeconds 参数就可以达到此目标。发送带 DelaySeconds 参数值大于0的消息初始状态为Delayed,此时消息不能被消费者消费,只有等 DelaySeconds 时间后消息变成 Active 状态后才可消费。发送消息时指定 DelaySeconds 参数的优先级高于延时消息队列的 DelaySeconds 属性,即两个 DelaySeconds 属性设置的值不同时以发送消息时指定的值为准。


Request


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

  • 请求行

    POST /queues/$queueName/messages HTTP/1.1

  • 特有Request Header

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

  • Request Body

    Request Body为XML格式,其中包含多条创建Message的属性。
参数名称说明参数值选项
MessageBody消息正文UTF-8字符集Required
DelaySecondsDelaySeconds 指定的秒数延后可被消费,单位为秒0-604800秒(7天)范围内某个整数值,默认值为0Optional
Priority指定消息的优先级权值,优先级越高的消息,越容易更早被消费取值范围1~16(其中1为最高优先级),默认优先级为8Optional


Response


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

  • HTTP Status Code

    HTTP/1.1 201 Created

  • 特有Response Header

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

  • Response Body

    返回的结果为XML格式,返回多条Message的MessageId和MessageBodyMD5子元素。
参数名称说明
MessageId消息编号,在一个队列唯一
MessageBodyMD5消息正文的MD5值


Special Error:

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

[backcolor=transparent]请求示例:
[backcolor=transparent]

[backcolor=transparent]

[backcolor=transparent]

展开
收起
轩墨 2017-10-24 15:27:56 1686 0
0 条回答
写回答
取消 提交回答
问答排行榜
最热
最新

相关电子书

更多
Spring Boot2.0实战Redis分布式缓存 立即下载
CUDA MATH API 立即下载
API PLAYBOOK 立即下载