Todos os produtos
Search
Central de documentação

Tablestore:Criar um tunnel

Última atualização: Jul 03, 2026

Para consumir dados de uma tabela em tempo real, chame a operação CreateTunnel e crie um tunnel para essa tabela. É possível criar vários tunnels para uma única tabela de dados. Ao criar um tunnel, especifique o nome da tabela de dados, o nome do tunnel e o tipo de tunnel.

Pré-requisitos

  • Uma instância de TunnelClient inicializada.

  • Uma tabela de dados criada. Para mais informações, consulte Criar uma tabela de dados.

Parâmetros

Parâmetros de solicitação

Parâmetro

Descrição

TableName

Nome da tabela de dados.

TunnelName

Nome do tunnel.

TunnelType

Tipo do tunnel. Valores válidos:

  • BaseData: consome e processa apenas dados completos.

  • Stream: consome e processa apenas dados incrementais.

  • BaseAndStream: após consumir e processar os dados completos, consome e processa os dados incrementais.

Se você definir este parâmetro como Stream ou BaseAndStream, o sistema considerará incrementais todos os dados gravados na tabela após a criação do tunnel. Caso precise consumir dados incrementais gerados a partir de um momento específico, configure o parâmetro startTime para esses dados.

  • Valores válidos para o parâmetro startTime: [Hora atual do sistema - Período de validade do Stream + 5 minutos, Hora atual do sistema]. Unidade: milissegundos.

    Nota

    O período de validade do Stream corresponde à duração dos logs incrementais em milissegundos, com limite máximo de sete dias. Esse período é definido ao ativar o Stream na tabela de dados e não pode ser modificado posteriormente.

  • Também é possível configurar o parâmetro endTime para os dados incrementais que deseja consumir. O valor de endTime deve ser maior que o valor de startTime.

Parâmetros de resposta

Parâmetro

Descrição

TunnelId

ID do tunnel.

ResponseInfo

Outros campos retornados na solicitação.

RequestId

ID da solicitação.

Exemplos

Criar um tunnel para consumo de dados completos

O código de exemplo a seguir demonstra como criar um tunnel do tipo BaseData:

// You can create a tunnel of the TunnelType.BaseData, TunnelType.Stream, or TunnelType.BaseAndStream type. 
// In this example, a tunnel of the BaseData type is created. To create tunnels of other types, set the TunnelType parameter in CreateTunnelRequest to the required types. 
private static void createTunnel(TunnelClient client, String tableName, 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());
}

Criar um tunnel para consumo de dados incrementais ou diferenciais

O exemplo abaixo ilustra a criação de um tunnel do tipo Stream ou BaseAndStream, definindo o intervalo de tempo dos dados incrementais a serem consumidos:

// Create a tunnel that is used to consume incremental or differential data and specify the start timestamp and the end timestamp for the time range of the incremental data that you want to consume. The configurations specified by StreamTunnelConfig do not take effect for tunnels of the BaseData type. 
private static void createStreamTunnelByOffset(TunnelClient client,String tableName,String tunnelName, long startTime, long endTime){
    CreateTunnelRequest createTunnelRequest = new CreateTunnelRequest(tableName,tunnelName, TunnelType.Stream);// Create a tunnel of the Stream type. 
    //CreateTunnelRequest createTunnelRequest = new CreateTunnelRequest(tableName,tunnelName, TunnelType.BaseAndStream);// Create a tunnel of the BaseAndStream type. 
    StreamTunnelConfig streamTunnelConfig = new StreamTunnelConfig();  
    /*
        Specify the start timestamp and the end timestamp to read incremental data. Unit: milliseconds. Valid values: [CurrentSystemTime - StreamExpiration + 5 minute, CurrentSystemTime). 
        CurrentSystemTime is the timestamp of the current system time accurate to milliseconds. StreamExpiration is the timestamp of the incremental log validity period accurate to milliseconds. The maximum validity period of incremental logs is seven days. You can specify the Stream validity period when you enable Stream for the data table. 
        The value of endTime must be greater than the value of startTime. 
     */
    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());
}

Perguntas frequentes

Erro OTSTrimmedDataAccess: os dados de stream solicitados já foram removidos ou não existem

Referências