CreateTunnel操作为某张数据表创建一个通道,一张数据表上可以创建多个通道。在创建通道时需要指定数据表名称、通道名称和通道类型。

请求参数

参数 说明
tableName 创建通道的数据表名称。
tunnelName 通道的名称。
tunnelType 通道的类型,包括如下取值:
  • BaseData:全量类型。只能消费处理全量数据。
  • Stream:增量类型。只能消费处理增量数据。
  • BaseAndStream:全量加增量类型。全量数据消费处理完成后,再消费处理增量数据。

响应参数

参数 说明
TunnelId 通道的ID。
ResponseInfo 返回的一些其它字段。
RequestId 当次请求的Request ID。

示例

  • 示例1

    创建全量类型的通道。

    //支持创建三种类型的通道TunnelType.BaseData(全量)、TunnelType.Stream(增量)和TunnelType.BaseAndStream(全量加增量)。
    //本示例为创建全量类型的通道,如果需要创建其它类型的通道,则将CreateTunnelRequest中的TunnelType设置为相应的类型。
    private static void createTunnel(TunnelClient client, String tunnelName) {
        CreateTunnelRequest request = new CreateTunnelRequest(TableName, tunnelName, TunnelType.BaseData);
        CreateTunnelResponse resp = client.createTunnel(request);
        System.out.println("RequestId: " + resp.getRequestId());
        System.out.println("TunnelId: " + resp.getTunnelId());
    }
  • 示例2

    创建增量或者全量加增量类型的通道,并指定读取的增量数据时间范围。

    //创建增量或者全量加增量类型的通道,指定起始时间戳或结束时间戳,表示读取的增量数据时间范围。对于全量类型的通道,StreamTunnelConfig的配置不生效。
    private static void createStreamTunnelByOffset(TunnelClient client,String tableName,String tunnelName){
        CreateTunnelRequest createTunnelRequest = new CreateTunnelRequest(tableName,tunnelName, TunnelType.Stream);//创建增量类型通道。
        //CreateTunnelRequest createTunnelRequest = new CreateTunnelRequest(tableName,tunnelName, TunnelType.BaseAndStream);//创建全量加增量类型通道。
        StreamTunnelConfig streamTunnelConfig = new StreamTunnelConfig();  
        /*
            指定增量数据的起始时间戳(startTime)和结束时间戳(endTime)。单位为毫秒,取值范围为[CurrentSystemTime - StreamExpiration + 5 minute, CurrentSystemTime)。
            其中CurrentSystemTime为当前系统时间的毫秒单位时间戳,StreamExpiration为增量日志过期时间的毫秒单位时间戳,最大值为7天,您可以在表属性中设置StreamExpiration。
            结束时间戳的取值必须大于起始时间戳。
         */
        streamTunnelConfig.setStartOffset(startTime);
        streamTunnelConfig.setEndOffset(endTime);
        createTunnelRequest.setStreamTunnelConfig(streamTunnelConfig);
        CreateTunnelResponse resp = client.createTunnel(createTunnelRequest);
        System.out.println("RequestId: " + resp.getRequestId());
        System.out.println("TunnelId: " + resp.getTunnelId());
    }