所有文档

          数据传输服务 DTS

          SDK接口简介

          介绍

          数据传输服务(DTS)的数据订阅功能需要通过服务提供的SDK进行增量数据的订阅及消费。

          在使用SDK消费之前,需要先在数据传输控制台创建需要订阅的源数据库实例的订阅通道。

          当订阅通道创建完成后,使用SDK可以实时订阅订阅通道中的增量数据。

          目前:数据传输只提供JAVA版本SDK。

          一个订阅通道只能被一个SDK消费,如果启动多个SDK连接同一个订阅通道时,最后启动的SDK进程将拉取到订阅数据,其他SDK将报错退出。如果有多个下游SDK需要订阅同一个RDS的增量数据。那么需要为每个下游SDK创建一个订阅通道。

          SDK中定义了多种接口和类,本小节简单介绍SDK中这些类和接口的方法定义。

          RegionContext类定义

          RegionContext用于保存启动数据订阅SDK所必须的元信息,本小节介绍RegionContext的主要接口函数。

          • void setAccessKey(String accessKey)

          设置安全凭证,参数为需要订阅数据的订阅任务对应的百度智能云账号的AccessKey。

          • void setSecretKey(String secretKey)

          设置安全凭证,参数为百度智能云账号对应的SecretKey。可以到 安全认证/Access Key 页面创建并获取。

          • void setDtsId(String dtsId)

          请求某个订阅任务的增量数据,参数String dtsId为订阅任务的ID,需要到数据传输控制台获取。

          ConsumerClient接口定义

          ConsumerClient是数据订阅SDK的全局管理对象,本小节介绍RegionContext的主要接口函数。

          • void start()

            启动SDK客户端,开始订阅增量数据。

          • void stop(boolean isAsync)

            停止SDK客户端,停止订阅增量数据。参数为是否异步停止SDK,true表示不等待SDK内部线程结束,直接返回

          • void addConcurrentListener(ConsumerListener arg0)

            注册消费监听者,只有注册过的ConsumerListener才可以处理接收到的订阅数据。

            参数ConsumerListener arg0 为类ClusterListener的对象。

          ConsumerListener接口定义

          ConsumerListener是消费监听者,用于封装用户自定义的消费和处理异常逻辑,本小节介绍ConsumerListener的主要接口函数。

          • void notify(DataMessage dataMsg)

            用于定义订阅数据的消费逻辑,当SDK接收到数据时,会通过notify通知ConsumerListener消费数据。

            函数输入参数类型为:DataMessage, 具体定义详见DataMessage接口定义。

          • void noException(Exception paramException)

            主要用于定义执行notify函数时,遇到异常的处理方法

            函数输入参数类型为:Exception, 即执行中抛出的异常对象

          DataMessage类定义

          每个DataMessage保存源数据库实例中若干条的变更数据记录,每条记录通过Record保存,本小节介绍DataMessage的主要接口函数。

          • List getRecordList()

            用于获取DataMessage中保存的Record对象列表

          Record类定义

          Record代表订阅的源数据库实例的单条变更记录,本小节介绍Record的主要接口函数。

          • byte[] getDbName()

            用于返回变更记录的库名

          • byte[] getTblName()

            用于返回变更记录的表名

          • RecordType getRecordType()

            用于返回变更记录的变更类型。

            变更类型包括INSERT、UPDATE、DELETE、BEGIN、COMMIT、DDL

          • String getPosition()

            用于返回变更记录的binlog position

          • String getOffset()

            用于返回变更记录在内部缓存中的偏移量(已禁用

          • String getTimestamp()

            用于返回变更记录的时间戳

          • List getFields()

            用于返回变更记录的字段列表

            List 包含了这条变更记录对应表的所有字段的定义及变更前后的镜像值,Field对象的定义详见Field接口定义。

          • byte[] getDdl()

            当变更记录类型为DDL时,返回statement格式的DDL SQL,其他类型时为空

          Field类定义

          Field定义了每个字段的编码、类型、字段名及字段值等属性,本小节介绍Field类的各个接口定义。

          • byte[] getFieldName()

            用于返回字段名

          • String getFieldType()

            用于返回字段类型

          • String getFieldCharset()

            用于返回字段字符集

          • byte[] getValueBefore()

            用于返回变更前该字段取值。INSERT类型和非DML类型时该字段为空

          • byte[] getValueAfter()

            用于返回变更后该字段取值。DELETE类型和非DML类型时该字段为空

          上一篇
          使用数据订阅SDK
          下一篇
          SDK下载页