有奖捉虫:办公协同&微信生态&物联网文档专题 HOT

1. 接口描述

接口请求域名: tdmq.tencentcloudapi.com 。

当前 ReceiveMessage 接口只支持 Partitioned 类型的 Topic。该接口用于接收发送到指定 Partitioned Topic 中的消息,当 Partitioned Topic 中没有消息但还去尝试调用该接口时,会抛出 ReceiveTimeout 的异常。

如何使用 BatchReceivePolicy:

BatchReceive 接口提供了如下三个参数:

● MaxNumMessages: 即每次使用 BatchReceive 的时候,最多一次Receive接口返回多少条消息。
● MaxNumBytes:即每次使用 BatchReceive 的时候,最多一次Receive接口返回多大内容的消息,单位是:bytes。
● Timeout:即每次使用 BatchReceive 的时候,最多一次 Receive 接口的超时时间是多久,单位是:MS。

默认如果上述三个参数都不指定,即关闭 BatchReceive 的特性。如果三个参数中的任意一个参数指定的数值大于 0,即开启 BatchReceive。BatchReceive 的结束条件为到达上述三个参数中任意一个指定的阈值。

注意:MaxNumMessages 和 MaxNumBytes 每一次接收的最大消息同时受限于 ReceiveQueueSize 的大小,如果 ReceiveQueueSize 的大小设置为 5,MaxNumMessages 设置为10,那么一次 BatchReceive 接收的最多的消息是 5条,而不是10条。

BatchReceivePolicy 的接口会一次性返回多条消息:

  1. 多条消息的内容之间使用特殊字符 '###' 来进行分割,业务侧接收到消息之后,可以利用不同语言提供的 Split 工具分割不同的消息。
  2. 多条消息的 MessageID 之间使用特殊字符 '###' 来进行分割,业务侧接收到消息之后,可以利用不同语言提供的 Split 工具分割不同的消息。(用于在调用 AcknowledgeMessage 接口中填入所需要的 MessageID 字段信息)

默认接口请求频率限制:1000次/秒。

推荐使用 API Explorer
点击调试
API Explorer 提供了在线调用、签名验证、SDK 代码生成和快速检索接口等能力。您可查看每次调用的请求内容和返回结果以及自动生成 SDK 调用示例。

2. 输入参数

以下请求参数列表仅列出了接口请求参数和部分公共参数,完整公共参数列表见 公共请求参数

参数名称 必选 类型 描述
Action String 公共参数,本接口取值:ReceiveMessage。
Version String 公共参数,本接口取值:2020-02-17。
Region String 公共参数,详见产品支持的 地域列表,本接口仅支持其中的: ap-bangkok, ap-beijing, ap-chengdu, ap-chongqing, ap-guangzhou, ap-hongkong, ap-jakarta, ap-mumbai, ap-nanjing, ap-seoul, ap-shanghai, ap-shanghai-fsi, ap-shenzhen-fsi, ap-singapore, ap-tokyo, eu-frankfurt, na-ashburn, na-siliconvalley, na-toronto 。
Topic String 接收消息的topic的名字, 这里尽量需要使用topic的全路径,如果不指定,即:tenant/namespace/topic。默认使用的是:public/default
示例值:persistent://tenant/namespace/my-topic
SubscriptionName String 订阅者的名字
示例值:my-sub
ReceiverQueueSize Integer 默认值为1000,consumer接收的消息会首先存储到receiverQueueSize这个队列中,用作调优接收消息的速率
示例值:1000
SubInitialPosition String 默认值为:Earliest。用作判定consumer初始接收消息的位置,可选参数为:Earliest, Latest
示例值:Latest
MaxNumMessages Integer 用于设置BatchReceivePolicy,指在一次batch中最多接收多少条消息,默认是 0。即不开启BatchReceivePolicy
示例值:100
MaxNumBytes Integer 用于设置BatchReceivePolicy,指在一次batch中最多接收的消息体有多大,单位是 bytes。默认是 0,即不开启BatchReceivePolicy
示例值:100000
Timeout Integer 用于设置BatchReceivePolicy,指在一次batch消息的接收z中最多等待的超时时间,单位是毫秒。默认是 0,即不开启BatchReceivePolicy
示例值:100

3. 输出参数

参数名称 类型 描述
MessageID String 用作标识消息的唯一主键
示例值:{"Response":{"MessageId":"26365:1475:0"}}
MessagePayload String 接收消息的内容
示例值:my-payload
AckTopic String 提供给 Ack 接口,用来Ack哪一个topic中的消息
示例值:my-topic
ErrorMsg String 返回的错误信息,如果为空,说明没有错误
注意:此字段可能返回 null,表示取不到有效值。
示例值:sssss
SubName String 返回订阅者的名字,用来创建 ack consumer时使用
注意:此字段可能返回 null,表示取不到有效值。
示例值:my-sub
MessageIDList String BatchReceivePolicy 一次性返回的多条消息的 MessageID,用 ‘###’ 来区分不同的 MessageID
注意:此字段可能返回 null,表示取不到有效值。
示例值: "71:12:0:0###71:13:0:0###71:16:0:0"
MessagesPayload String BatchReceivePolicy 一次性返回的多条消息的消息内容,用 ‘###’ 来区分不同的消息内容
注意:此字段可能返回 null,表示取不到有效值。
示例值:"hello-1###hello-2###hello-3"
RequestId String 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。

4. 示例

示例1 接收消息

输入示例

POST / HTTP/1.1
Host: tdmq.tencentcloudapi.com
Content-Type: application/json
X-TC-Action: ReceiveMessage
<公共请求参数>

{
    "Topic": "tenant/namespace/topic",
    "SubscriptionName": "\"test-sub\""
}

输出示例

{
    "Response": {
        "RequestId": "36713f94-d07d-4b96-babf-42d139276f23",
        "MessageID": "71:12:0:0",
        "MessageIDList": "",
        "MessagesPayload": "",
        "MessagePayload": "hello TDMQ",
        "SubName": "xx",
        "AckTopic": "persistent://tenant/namespace/topic",
        "ErrorMsg": "xx"
    }
}

5. 开发者资源

腾讯云 API 平台

腾讯云 API 平台 是综合 API 文档、错误码、API Explorer 及 SDK 等资源的统一查询平台,方便您从同一入口查询及使用腾讯云提供的所有 API 服务。

API Inspector

用户可通过 API Inspector 查看控制台每一步操作关联的 API 调用情况,并自动生成各语言版本的 API 代码,也可前往 API Explorer 进行在线调试。

SDK

云 API 3.0 提供了配套的开发工具集(SDK),支持多种编程语言,能更方便的调用 API。

命令行工具

6. 错误码

以下仅列出了接口业务逻辑相关的错误码,其他错误码详见 公共错误码

错误码 描述
FailedOperation.CreateProducerError 创建producer出错。
FailedOperation.CreatePulsarClientError 创建TDMQ client的出错。
FailedOperation.MaxMessageSizeError 最大消息超过1MB。
FailedOperation.MessageIDError 上传的msgID错误。
FailedOperation.ReceiveError 接收消息出错。
FailedOperation.ReceiveTimeout 接收消息超时,请重试。
FailedOperation.SendMessageTimeoutError 消息发送超时。
FailedOperation.TopicTypeError 请使用partition topic。
InvalidParameter.TenantNotFound 上传的 tenant name 错误。
InvalidParameter.TokenNotFound 没有获取到正确的 token。
InvalidParameterValue.TopicNotFound 上传的topic name错误。