更新时间:2023-11-13 GMT+08:00

SDK接口介绍

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

  • SubscribeContext接口定义
    表1 SubscribeContext接口定义

    函数名称

    说明

    setDomainName(String domainName)

    设置用户名。

    参数为创建所需数据订阅任务的IAM主账号名。

    setUserId(String userId)

    用户ID。

    登录控制台之后,单击右上角“账户名 > 我的凭证 > 用户ID”,复制用户ID即可,主账号或子账号ID。

    setPassword(String password)

    设置用户密码。

    参数为创建所需数据订阅任务的IAM主账号或子账号密码。

    setIp(String ip)

    设置订阅通道的IP。

    在数据订阅页面,选择指定订阅任务,单击任务名称,在基本信息页签下,获取订阅实例信息的内部IP即可。

  • ClusterClient接口定义
    表2 ClusterClient接口定义

    函数名称

    说明

    void addClusterListener(ClusterListener var1)

    添加下游监听者。监听者加入到一个ClusterClient中,才可以订阅订阅通道中的增量数据。

    参数ClusterListener arg0 为类ClusterListener的对象。

    void start()

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

    void stop()

    停止订阅增量数据。

  • ClusterListener接口定义
    表3 ClusterListener接口定义

    函数名称

    说明

    void notify(List<ClusterMessage> var1)

    该函数主要用于定义增量数据的消费。当SDK接收到数据时,会通过notify通知ClusterListner消费数据。例如SDK使用模版的消费方式,就是将订阅数据打印到屏幕上。

    该函数输入参数类型为:List <ClusterMessage>, 其中ClusterMessage为订阅数据存储的结构对象,具体定义详见表4

  • ClusterMessage接口定义

    每个ClusterMessage保存RDS中的一个事务的数据记录,事务中的每条记录通过Record保存。

    表4 ClusterMessage接口定义

    函数名称

    说明

    Record getRecord()

    该接口从ClusterMessage中获取一条变更记录。这个变更记录表示RDS的binlog文件中的每一条记录,例如begin,commit,update,insert等。

  • Record接口定义

    Record代表订阅的RDS的binlog文件中的每条记录,例如begin,commit,update等。

    表5 Record接口定义

    函数名称

    说明

    String getAttribute(final String key)

    该函数可以获取Record中主要的一些属性值。传入参数为属性名,返回这个属性的值。

    可以调用这个函数获取的属性名及对应的属性值如表6所示。

    Type getOpt()

    获取这条记录的变更类型,包括: insert、delete、update、replace、ddl、begin、commit、heartbeat。

    String getCheckpoint()

    获取这条变更记录在binlog中的位点,返回的位点格式为:binlog_offset@binlog_fid。

    其中binlog_offset为变更记录在binlog文件中的偏移量,binlog_fid为binlog文件的数字后缀,例如binlog文件名为mysql-bin.00092,那么binlog_fid为92。

    int getFieldCount()

    获取这条变更记录的字段Field的个数。

    List <Field> getFieldList()

    该函数返回结果的数据类型为List <Field>。

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

    表6 属性信息

    key

    说明

    record_id

    这条Record的ID,这个ID在订阅过程中不保证递增。

    instance

    这条Record对应的数据库实例的连接地址,格式为:ip:port。

    source_type

    这条Record对应数据库实例的引擎类型,目前只支持MySQL。

    source_category

    这条Record的类型,目前只支持full_recorded。

    timestamp

    这条Record写入binlog的时间,这个时间同时也是这条SQL在RDS中执行的时间。

    checkpoint

    这条Record对应的binlog文件的位点,格式为:file_offset@file_name,file_name为binlog文件的数字后缀。

    record_type

    这条Record对应的操作类型,主要取值包括:insert/update/delete/replace/ddl/begin/commit/heartbeat。

    db

    这条Record更新对应的数据库名。

    table_name

    这条Record更新表的表名。

    record_recording

    这条Record对应的编码。

    seqno

    数据位点,DRS做位点的时候使用的。

    fragno

    保留字段,以前判断是否为事务分片使用,现在无意义。

    isLastFrag

    保留字段,以前判断是否为事务最后一个记录,现在无意义。

  • Field接口定义

    Field类定义了每个字段的编码、类型、字段名、字段值以及是否为主键等属性,Field类的各个接口定义如表7所示。

    表7 Field接口定义

    函数名称

    说明

    String getEncoding()

    获取该字段值的编码格式。

    String getFieldname()

    获取该字段的名称。

    Type getType()

    获取该字段的数据类型,Type的定义具体参见字段类型定义。

    ByteString getValue()

    获取该字段的值,返回类型为ByteString,当值为空时,返回NULL。

    Boolean isPrimary()

    判断该字段是否是表的主键列,如果是返回True,否则返回False。