更新时间:2022-02-21 GMT+08:00

消费消息

功能介绍

消费指定队列中的消息。可同时消费多条消息,每次消费的消息负载不超过512KB。

当队列中消息较少时,单次消费返回的消息数量可能会少于指定条数,但多次消费最终可获取全部消息,当队列为空时,返回为空。

每个消费组只支持一种Label规则,如果第二次消费更换了Label规则,则消费失败。

URI

GET /v1.0/{project_id}/queues/{queue_id}/groups/{consumer_group_id}/messages?max_msgs={max_msgs}&time_wait={time_wait}&ack_wait={ack_wait}&tag={tag1}&tag={tag2}&tag_type={TYPE}

参数说明请参见表1

表1 参数说明

名称

类型

是否必选

说明

取值范围

project_id

String

项目ID。

N/A

queue_id

String

指定的队列ID。

N/A

consumer_group_id

String

消费组的ID。从查看指定队列的所有消费组的响应消息中获取消费组ID。

N/A

max_msgs

Integer

获取可消费的消息的条数。

取值范围:1~10。

默认值:10

time_wait

Integer

设定队列可消费的消息为0时的读取消息等待时间。

如果在等待时间内有新的消息,则立即返回消费结果,如果等待时间内没有新的消息,则到等待时间后返回消费结果。

取值范围:1~60s

默认值:3s

说明:不带该参数或者配置为空,都默认为3s。

ack_wait

Integer

提交确认消费的超时时间,客户端需要在该时间内提交消费确认,如果超过指定时间,没有确认消费,系统会报消息确认超时或handler无效,则默认为消费失败。

取值范围:15~300s

默认值:30s

说明:不带该参数或者配置为空,都默认为30s。

tag

String

添加标签后可以按照Tag进行过滤,只消费匹配上标签的消息。

Tag的数量不超过3个。

每个Tag长度不超过64。

tag_type

String

多个消息标签的过滤类型。

取值范围:

  • and:必须所有标签匹配上,才能消费消息。
  • or:只要有一条标签匹配上,就可以消费消息。

默认值为:or。

示例

GET v1.0/b78a90ae2a134b4b8b2ba30acab4e23a/queues/075ae7da-6ce5-4966-940c-17c19fb5175e/groups/g-5ec247fd-d4a2-4d4f-9876-e4ff3280c461/messages?max_msgs=10&ack_wait=30&tag=tag1&tag=tag2&tag_type=or

请求消息

请求参数

无。

请求示例

无。

响应消息

响应参数

响应参数如表2表3所示。

表2 响应参数

参数

类型

描述

message

JSON对象

消息的内容。

handler

String

消息handler。

表3 message参数

参数

类型

描述

body

JSON

消息体的内容。

attributes

JSON对象

属性的列表。

tags

JSON数组

标签值。

响应示例

[{
  "message" : {
   "body" : {
    "foo" : "123="
   },
   "attributes": {
       "attribute1": "value1",
       "attribute2": "value2"
        }
  },
  "tags":["tag1","tag2"],  
  "handler" : "eyJjZyI6Im15X2pzb25fZ3JvdXAiLCJjaSI6InJlc3QtY29uc3VtZXItYzNlNThiNjEtYzA0NC00NGJkLTkxM2ItZDgzNjljNmJhYTQxIiwiY291bnQiOjAsIm9mZnNldCI6MCwicCI6MCwidCI6InRlc3QyIn0="
 }, {
  "message" : {
   "body" : {
    "foo" : "123="
   },
   "attributes": {
       "attribute1": "value1",
       "attribute2": "value2"
        }
  },
  "tags":["tag1","tag2"],  
  "handler" : "eyJjZyI6Im15X2pzb25fZ3JvdXAiLCJjaSI6InJlc3QtY29uc3VtZXItYzNlNThiNjEtYzA0NC00NGJkLTkxM2ItZDgzNjljNmJhYTQxIiwiY291bnQiOjAsIm9mZnNldCI6MSwicCI6MCwidCI6InRlc3QyIn0="
 }
]

状态码

操作成功的状态码如表4所示,操作失败的状态码请参考状态码

表4 状态码

状态码

描述

200

获取信息成功。