C++ SDK
最近更新时间: 2025-10-11 18:10:00
操作场景
本文以调用 C++ SDK 为例介绍通过开源 SDK 实现消息收发的操作过程,帮助您更好地理解消息收发的完整过程。
前提条件
操作步骤
- 准备环境。
- 依赖及编译安装参考 C++ SDK 编译安装。
- 项目如引入相关头文件及依赖库。
- 创建 TDMQ 客户端。
// 认证信息
Credential cred = Credential(SECRET_ID, SECRET_KEY);
HttpProfile httpProfile = HttpProfile();
httpProfile.SetEndpoint(ENDPOINT);
ClientProfile clientProfile = ClientProfile();
clientProfile.SetHttpProfile(httpProfile);
// 创建tdmq客户端
TdmqClient client = TdmqClient(cred, REGION, clientProfile);
| 参数 | 说明 |
|---|---|
| SECRET_ID、SECRET_KEY | ![]() |
| ENDPOINT | 接口请求域名: tdmq.tencentcloudapi.com。 |
| REGION | 集群所属地域 |
- 发送消息。
SendMessagesRequest req = SendMessagesRequest();
// 设置已授权角色密钥
req.SetStringToken(token);
// 设置已授权角色名称
req.SetProducerName(userName);
// 设置topic名称, 格式为: 集群(租户)ID/命名空间/Topic名称
req.SetTopic(topicName);
// 消息内容
req.SetPayload("this is a new message.");
// 设置发送消息超时时间
req.SetSendTimeout(3000);
// 发送消息
auto outcome = client.SendMessages(req);
if (!outcome.IsSuccess()) {
cout << outcome.GetError().PrintAll() << endl;
return -1;
}
// 获取结果
SendMessagesResponse resp = outcome.GetResult();
| 参数 | 说明 |
|---|---|
| token | 角色密钥,在角色管理页面复制密钥列复制。![]() |
| userName | 角色名称,在角色管理页面复制名称列复制。 |
| topicName | Topic 名称,格式为:集群(租户)ID/命名空间/Topic名称,示例:pulsar-xxx/sdk_http/topic1。可以从控制台上Topic 管理页面直接复制。 |
- 消费消息。
ReceiveMessageRequest req = ReceiveMessageRequest();
// 设置topic名称, 格式为:集群(租户)ID/命名空间/Topic名称
req.SetTopic(topicName);
// 设置订阅名称
req.SetSubscriptionName(subName);
// consumer接收的消息会首先存储到receiverQueueSize这个队列中,用作调优接收消息的速率
req.SetReceiverQueueSize(10);
// 设置consumer初始接收消息的位置,可选参数为:Earliest, Latest
req.SetSubInitialPosition("Latest");
// 接收消息
auto outcome = client.ReceiveMessage(req);
if (!outcome.IsSuccess()) {
cout << outcome.GetError().PrintAll() << endl;
return -1;
}
// 获取结果
ReceiveMessageResponse resp = outcome.GetResult();
| 参数 | 说明 |
|---|---|
| topicName | Topic 名称,格式为:集群(租户)ID/命名空间/Topic名称,示例:pulsar-xxx/sdk_http/topic1。可以从控制台上 Topic 管理 页面直接复制。 |
| subName | 订阅名称,可在控制台集群管理 > 消费者 tab 页面复制。 |
- 确认消息。
AcknowledgeMessageRequest req = AcknowledgeMessageRequest();
// 确认消息的id
req.SetMessageId(messageId);
// 设置topic名称, 格式为:集群(租户)ID/命名空间/Topic名称
req.SetAckTopic(topicName);
// 设置订阅信息
req.SetSubName(subName);
// 确认消息
auto outcome = client.AcknowledgeMessage(req);
if (!outcome.IsSuccess()) {
cout << outcome.GetError().PrintAll() << endl;
return -1;
}
// 获取结果
AcknowledgeMessageResponse resp = outcome.GetResult();
| 参数 | 说明 |
|---|---|
| messageId | 消费消息获取导的消息 ID。 |
| topicName | Topic 名称,格式为: 集群(租户)ID/命名空间/Topic名称,示例:pulsar-xxx/sdk_http/topic1。可以从控制台上 Topic 管理 页面直接复制。 |
| subName | 订阅名称,可在控制台集群管理 > 消费者 tab 页面复制。 |
说明:
上述是对消息收发操作的简单介绍,完整实例可参见 Demo 或 云 API Explorer。

