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 的接口会一次性返回多条消息:
- 多条消息的内容之间使用特殊字符 '###' 来进行分割,业务侧接收到消息之后,可以利用不同语言提供的 Split 工具分割不同的消息。
- 多条消息的 MessageID 之间使用特殊字符 '###' 来进行分割,业务侧接收到消息之后,可以利用不同语言提供的 Split 工具分割不同的消息。(用于在调用 AcknowledgeMessage 接口中填入所需要的 MessageID 字段信息)
默认接口请求频率限制:1000次/秒。
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。
- Tencent Cloud SDK 3.0 for Python: GitHub Gitee
- Tencent Cloud SDK 3.0 for Java: GitHub Gitee
- Tencent Cloud SDK 3.0 for PHP: GitHub Gitee
- Tencent Cloud SDK 3.0 for Go: GitHub Gitee
- Tencent Cloud SDK 3.0 for Node.js: GitHub Gitee
- Tencent Cloud SDK 3.0 for .NET: GitHub Gitee
- Tencent Cloud SDK 3.0 for C++: GitHub Gitee
- Tencent Cloud SDK 3.0 for Ruby: GitHub Gitee
命令行工具
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错误。 |