tencent cloud

文档反馈

C++ SDK 使用

最后更新时间:2024-01-17 16:57:04

    操作场景

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

    前提条件

    操作步骤

    1. 准备环境。
    1.1 需要在客户端环境安装 RocketMQ-Client-CPP 库,根据官方文档进行安装即可 安装 CPP 动态库推荐使用 master 分支构建
    1.2 在项目中引入 RocketMQ-Client-CPP 相关头文件及动态库。
    2. 初始化消息生产者。
    // 设置生产组名称
    DefaultMQProducer producer(groupName);
    // 设置服务接入地址
    producer.setNamesrvAddr(nameserver);
    // 设置用户权限
    producer.setSessionCredentials(
    accessKey, // 角色密钥
    secretKey, // 角色名称
    "");
    // 设置命名空间(命名空间全称)
    producer.setNameSpace(namespace);
    // 请确保参数设置完成在启动之前
    producer.start();
    参数
    说明
    groupName
    生产者组名称,在控制台集群管理中 Group tab 中获取。
    nameserver
    集群接入地址,在集群基本信息中,根据使用需求,使用不同的内网/公网接入地址。
    
    
    
    secretKey
    角色名称,在 集群权限 页面复制 SecretKey 复制。
    accessKey
    角色密钥,在 集群权限 页面复制 AccessKey 复制。
    
    
    
    3. 发送消息。
    // 初始化消息内容
    MQMessage msg(
    topicName, // topic名称
    TAGS, // 消息tag
    KEYS, // 消息业务key
    "Hello cpp client, this is a message." // 消息内容
    );
    try {
    // 发送消息
    SendResult sendResult = producer.send(msg);
    std::cout << "SendResult:" << sendResult.getSendStatus() << ", Message ID: " << sendResult.getMsgId()
    << std::endl;
    } catch (MQException e) {
    std::cout << "ErrorCode: " << e.GetError() << " Exception:" << e.what() << std::endl;
    }
    参数
    说明
    topicName
    Topic 的名称,在控制台 topic 页面复制。
    TAGS
    用来设置消息的 TAG。
    KEYS
    设置消息业务 key。
    4. 资源释放。
    // 释放资源
    producer.shutdown();
    5. 初始化消费者。
    // 消息监听
    class ExampleMessageListener : public MessageListenerConcurrently {
    public:
    ConsumeStatus consumeMessage(const std::vector<MQMessageExt> &msgs) {
    for (auto item = msgs.begin(); item != msgs.end(); item++) {
    // 业务
    std::cout << "Received Message Topic:" << item->getTopic() << ", MsgId:" << item->getMsgId() << ", TAGS:"
    << item->getTags() << ", KEYS:" << item->getKeys() << ", Body:" << item->getBody() << std::endl;
    }
    // 消费成功返回CONSUME_SUCCESS
    return CONSUME_SUCCESS;
    // 消费失败返回RECONSUME_LATER,该消息将会被重新消费
    // return RECONSUME_LATER;
    }
    };
    // 初始化消费者
    DefaultMQPushConsumer *consumer = new DefaultMQPushConsumer(groupName);
    // 设置服务地址
    consumer->setNamesrvAddr(nameserver);
    // 设置用户权限
    consumer->setSessionCredentials(
    accessKey,
    secretKey,
    "");
    // 设置命名空间
    consumer->setNameSpace(namespace);
    // 设置实例名称
    consumer->setInstanceName("CppClient");
    // 请注册自定义侦听函数用来处理接收到的消息,并返回响应的处理结果。
    ExampleMessageListener *messageListener = new ExampleMessageListener();
    // 订阅消息
    consumer->subscribe(topicName, TAGS);
    // 设置消息监听
    consumer->registerMessageListener(messageListener);
    // 准备工作完成,必须调用启动函数,才可以正常工作。
    consumer->start();
    参数
    说明
    groupName
    消费者组名称。在控制台集群管理中 Group 页签中获取。
    nameserver
    集群接入地址,在集群管理页面操作列的获取接入地址获取。
    
    
    
    secretKey
    角色名称,在 集群权限 页面复制 SecretKey 复制。
    accessKey
    角色密钥,在 集群权限 页面复制 AccessKey 复制。
    
    
    
    topicName
    Topic 的名称,在控制台 topic 页面复制。
    TAGS
    用来设置订阅消息的 TAG。
    6. 资源释放。
    // 资源释放
    consumer->shutdown();
    7. 发送完成消息后会得到一个消息ID (messageID),开发者可以在 “消息查询” 页面查询刚刚发送的消息,如下图所示;并且可以查看特定消息的详情和轨迹等信息,详情请参见 消息查询
    
    
    
    说明:
    上述是对消息的发布和订阅方式的简单介绍。更多操作可参见 DemoRocketMQ-Client-CPP 示例
    
    联系我们

    联系我们,为您的业务提供专属服务。

    技术支持

    如果你想寻求进一步的帮助,通过工单与我们进行联络。我们提供7x24的工单服务。

    7x24 电话支持