DescribeTunnel 为用户描述某个通道里的具体 Channel 信息。目前设计中,一个 Channel 对应 TableStore Stream 接口的一个数据分片。

请求参数说明

  • TableName:要描述的通道表名。
  • TunnelName:要描述的通道名称。

响应参数说明

  • TunnelConsumePoint:通道消费增量数据的最新时间点,其值等于 Tunnel 中消费最慢的 Channel 的时间点,默认为1970年1月1日(UTC)。
  • TunnelInfo:通道信息的列表。
    • TunnelId:通道的ID。
    • TunnelType:通道的类型, 有全量(BaseData)、增量(Stream)和全量加增量(BaseAndStream)三类。
    • TableName:该通道所在的表名。
    • InstanceName:该通道所在的实例名。
    • Stage:该通道所处的阶段, 有初始化(InitBaseDataAndStreamShard),全量处理(ProcessBaseData)和增量处理(ProcessStream)三类。
    • Expired:数据是否超期,若该值返回true,请及时在钉钉上联系表格存储技术支持。
  • List<ChannelInfo>:通道中的Channel信息列表。
    • ChannelId:Channel对应的Id。
    • ChannelType:Channel的类型,有全量(BaseData)和增量(Stream)两种。
    • ChannelStatus:Channel的状态,有等待(WAIT)、打开(OPEN)、关闭中(CLOSING)、关闭(CLOSE)和结束(TERMINATED)五种。

    • ClientId:通道客户端的 ID 标识,默认由客户端主机名(在TunnelWorkerConfig里可以自定义)和随机串拼接而成。
    • ChannelConsumePoint:Channel 消费增量数据的最新时间点,默认值为1970年1月1日(UTC),全量类型无此概念。
    • ChannelCount:Channel 同步的数据条数。
  • ResponseInfo:返回的一些其它字段。

    RequestId:当次请求的 Request ID。

示例

// 数据消费时间位点(ConsumePoint)和RPO(Recovery Point Objective)为增量阶段专用属性值,全量阶段无此概念。
// Tunnel增量: TunnelInfo中Stage的值为ProcessStream;Channel增量:ChannelInfo中的ChannelType为Stream。
private static void describeTunnel(TunnelClient client, String tableName, String tunnelName) {
    DescribeTunnelRequest request = new DescribeTunnelRequest(tableName, tunnelName);
    DescribeTunnelResponse resp = client.describeTunnel(request);
    System.out.println("RequestId: " + resp.getRequestId());
    // 通道消费增量数据的最新时间点,其值等于Tunnel中消费最慢的Channel的时间点,默认为1970年1月1日(UTC)。
    System.out.println("TunnelConsumePoint: " + resp.getTunnelConsumePoint());
    System.out.println("TunnelInfo: " + resp.getTunnelInfo());
    for (ChannelInfo ci : resp.getChannelInfos()) {
        System.out.println("ChannelInfo::::::");
        System.out.println("\tChannelId: " + ci.getChannelId());
        // Channel的类型, 目前支持BaseData(全量)和增量(Stream)两类。
        System.out.println("\tChannelType: " + ci.getChannelType());
        // 客户端的ID标识, 默认由客户端主机名和随机串拼接而成。
        System.out.println("\tClientId: " + ci.getClientId());
        // Channel消费增量数据的最新时间点。
        System.out.println("\tChannelConsumePoint: " + ci.getChannelConsumePoint());
        // Channel同步的数据条数。
        System.out.println("\tChannelCount: " + ci.getChannelCount());
    }
}