tencent cloud

消息队列 Pulsar 版

动态与公告
新功能发布记录
集群版本更新记录
产品公告
产品简介
TDMQ 产品系列介绍与选型
什么是消息队列 Pulsar 版
产品优势
应用场景
技术原理
产品系列
开源 Pulsar 版本支持说明
与开源 Pulsar 对比
高可用
配额与限制
基础概念
产品计费
计费概述
价格说明
计费示例
续费说明
查看消费明细
欠费说明
退费说明
快速入门
入门流程指引
准备工作
使用 SDK 收发普通消息
使用 SDK 收发高级特性消息
用户指南
使用流程指引
配置账号权限
新建集群
配置命名空间
配置 Topic
连接集群
管理集群
查询消息及轨迹
跨地域复制
查看监控和配置告警
实践教程
客户端使用实践
异常消费者隔离
限流机制说明
交易对账
消息幂等性
消息压缩
迁移指南
单写多读集群迁移方案
虚拟集群平滑迁移至专业集群
API 参考
API 概览
SDK 参考
SDK 概述
SDK 配置参数推荐
TCP 协议(Pulsar 社区版)
安全与合规
权限管理
删除保护
云 API 审计
常见问题
监控相关
客户端相关
服务协议
服务等级协议
TDMQ 政策
联系我们
词汇表

C++ SDK

PDF
聚焦模式
字号
最后更新时间: 2025-12-24 15:26:38

操作场景

本文以调用 C++ SDK 为例介绍通过开源 SDK 实现消息收发的操作过程,帮助您更好地理解消息收发的完整过程。

前提条件

已参考 SDK 概述,获取相关的客户端连接参数

操作步骤

1. 准备环境。
1.1 在客户端环境安装 Pulsar C++ client,安装过程可参考官方教程 Pulsar C++ client
1.2 在项目中引入 Pulsar C++ client 相关头文件及动态库。
2. 创建客户端。
// 客户端配置信息
ClientConfiguration config;
// 设置授权角色密钥
AuthenticationPtr auth = pulsar::AuthToken::createWithToken(AUTHENTICATION);
config.setAuth(auth);
// 创建客户端
Client client(SERVICE_URL, config);
参数
说明
SERVICE_URL
集群接入地址,可以在控制台 集群管理 页面查看并复制。
img


AUTHENTICATION
角色密钥,在 角色管理 页面复制密钥。
img


3. 创建生产者。
// 生产者配置
ProducerConfiguration producerConf;
producerConf.setBlockIfQueueFull(true);
producerConf.setSendTimeout(5000);
// 生产者
Producer producer;
// 创建生产者
Result result = client.createProducer(
// topic完整路径,格式为persistent://集群(租户)ID/命名空间/Topic名称
"persistent://pulsar-xxx/sdk_cpp/topic1",
producerConf,
producer);
if (result != ResultOk) {
std::cout << "Error creating producer: " << result << std::endl;
return -1;
}
说明
Topic 名称需要填入完整路径,即 persistent://clusterid/namespace/Topicclusterid/namespace/topic 的部分可以从控制台上 Topic管理 页面直接复制。
3. 发送消息。
// 消息内容
std::string content = "hello cpp client, this is a msg";
// 构建消息对象
Message msg = MessageBuilder().setContent(content)
.setPartitionKey("mykey") // 业务key
.setProperty("x", "1") // 设置消息参数
.build();
// 发送消息
Result result = producer.send(msg);
if (result != ResultOk) {
// 发送失败
std::cout << "The message " << content << " could not be sent, received code: " << result << std::endl;
} else {
// 发送成功
std::cout << "The message " << content << " sent successfully" << std::endl;
}
4. 创建消费者。
// 消费者配置信息
ConsumerConfiguration consumerConfiguration;
consumerConfiguration.setSubscriptionInitialPosition(pulsar::InitialPositionEarliest);
// 消费者
Consumer consumer;
// 订阅topic
Result result = client.subscribe(
// topic完整路径,格式为persistent://集群(租户)ID/命名空间/Topic名称
"persistent://pulsar-xxx/sdk_cpp/topic1",
// 订阅名称
"sub_topic1",
consumerConfiguration,
consumer);

if (result != ResultOk) {
std::cout << "Failed to subscribe: " << result << std::endl;
return -1;
}

说明
Topic 名称需要填入完整路径,即 persistent://clusterid/namespace/Topicclusterid/namespace/topic 的部分可以从控制台上 Topic管理 页面直接复制。
img


subscriptionName 需要写入订阅名,可在消费管理界面查看。
5. 消费消息。
Message msg;
// 获取消息
consumer.receive(msg);
// 模拟业务
std::cout << "Received: " << msg << " with payload '" << msg.getDataAsString() << "'" << std::endl;
// 回复ack
consumer.acknowledge(msg);
// 消费失败回复nack, 消息将会重新投递
// consumer.negativeAcknowledge(msg);
6. 登录 TDMQ Pulsar 版控制台,依次单击 Topic 管理 > Topic 名称进入消费管理页面,点开订阅名下方右三角号,可查看生产消费记录。
img


说明
上述是对消息的发布和订阅方式的简单介绍。更多操作可参见 DemoPulsar 官方文档


帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈