tencent cloud

文档反馈

SDK 升级说明

最后更新时间:2023-11-21 10:38:04
    说明:
    当前旧版本数据订阅功能已停止售卖,如果用户需要新建订阅任务和消费数据,请使用 Kafka 版数据订阅功能,参考 数据订阅(Kafka 版)、使用 Kafka 客户端消费订阅数据。
    腾讯云数据订阅目前正在推动 API 2.0 接口下线。数据订阅 SDK 2.8.0 及以下版本,在鉴权时使用的是 API 2.0 接口,因此 API 2.0 接口下线后,SDK 2.8.0 及以下的版本使用将受到影响。
    请及时按照如下方法升级您通过 SDK 进行消费的程序,避免受到 API 2.0 接口下线影响。
    注意:
    建议用户使用子账号密钥 + 环境变量的方式调用 SDK,提高 SDK 使用的安全性,子账号密钥获取可参考子账号访问密钥管理。为子账号授权时,请遵循最小权限指引原则,防止泄漏目标存储桶或对象之外的资源。
    如果您一定要使用永久密钥,建议遵循最小权限指引原则对永久密钥的权限范围进行限制。

    步骤1:确认 SDK 版本

    确认您之前在 数据订阅 SDK 文档下载并已使用的 SDK 版本。 SDK 版本判断方法如下:
    查看使用的 SDK 压缩包名:包名类似于binlogsdk-2.8.0-jar-with-dependencies.jar,其中包含了版本号信息。
    查看 SDK_VERSION 版本号:若 SDK 包已被重命名,请使用解压命令unzip 将 SDK 包解压,再查看其中的tencentSubscribe.properties文件,SDK_VERSION标识了 SDK 版本号。
    若数据订阅 SDK 版本为2.8.0及以下,请执行 步骤2

    步骤2:升级 SDK 版本

    1. 数据订阅 SDK 下载最新的 SDK 版本,并替换2.8.0及以下版本的数据订阅 SDK。
    2. 替换数据订阅 SDK 版本后,参考如下代码中“程序改动点”, 增加设置订阅 channel 所属 region 的一行代码即可。
    package com.qcloud.biz;
    import com.qcloud.dts.context.NetworkEnv;
    import com.qcloud.dts.context.SubscribeContext;
    import com.qcloud.dts.message.ClusterMessage;
    import com.qcloud.dts.message.DataMessage;
    import com.qcloud.dts.subscribe.ClusterListener;
    import com.qcloud.dts.subscribe.DefaultSubscribeClient;
    import com.qcloud.dts.subscribe.SubscribeClient;
    import java.util.List;
    public class Main {
    public static void main(String[] args) throws Exception {
    
    SubscribeContext context=new SubscribeContext();
    //用户 secretId、secretKey,建议使用子账号密钥,授权遵循最小权限指引,降低使用风险。子账号密钥获取可参考https://www.tencentcloud.com/document/product/598/32675
    context.setSecretId("AKID-522dabxxxxxxxxxxxxxxxxxx");
    context.setSecretKey("AKEY-0ff4cxxxxxxxxxxxxxxxxxxxx");
    /*****************程序改动点 BEGIN ****************/
    // API 2.0 接口下线后,如果不设置 region 参数,将会使用 API 2.0 做鉴权
    // API 2.0 下线后鉴权会失效,SDK 也不能正常使用。
    // 设置订阅 channel 所属的 region。
    context.setRegion("ap-chongqing");
    /*****************程序改动点 END ******************/
    
    
    //创建客户端
    SubscribeClient client=new DefaultSubscribeClient(context);
    //创建订阅 listener
    ClusterListener listener= new ClusterListener() {
    @Override
    public void notify(List<ClusterMessage> messages) throws Exception {
    //消费订阅到的数据
    for(ClusterMessage m:messages){
    for(DataMessage.Record.Field f:m.getRecord().getFieldList()){
    if(f.getFieldname().equals("id")){
    System.out.println("seq:"+f.getValue());
    }
    DataMessage.Record record = m.getRecord();
    }
    //消费完之后,确认消费
    m.ackAsConsumed();
    }
    }
    @Override
    public void onException(Exception e){
    System.out.println("listen exception"+e);
    }};
    //添加监听者
    client.addClusterListener(listener);
    //设置请求的订阅通道
    client.askForGUID("dts-channel-r0M8kKsSyRZmSxQt");
    //启动客户端
    client.start();
    }
    }
    
    联系我们

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

    技术支持

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

    7x24 电话支持