Todos os produtos
Search
Central de documentação

Tablestore:Inicializar TunnelClient

Última atualização: Jul 31, 2026

O Tablestore SDK for Java usa um cliente dedicado para gerenciar túneis e iniciar o consumo de dados. Inicialize esse cliente com o nome da instância, o endpoint e as credenciais de acesso.

Pré-requisitos

Instale o Tablestore SDK for Java e configure as credenciais de acesso. O exemplo usa assinatura V4 e requer a versão 5.17.5 ou posterior.

Descrição do recurso

O TunnelClient é o cliente dedicado ao Tunnel Service. As operações de gerenciamento de túnel e os workers de consumo de dados usam este cliente para acessar o service. Reutilize uma instância do cliente no mesmo processo e chame shutdown após concluir todas as operações de túnel.

O construtor a seguir inicializa o TunnelClient:

public TunnelClient(
    String endpoint,
    CredentialsProvider credsProvider,
    String instanceName,
    ClientConfiguration config,
    ResourceManager resourceManager
)

O exemplo abaixo usa a configuração padrão do cliente e um gerenciador de recursos exclusivo para inicializar o TunnelClient. Em seguida, envia uma solicitação listTunnel somente leitura para uma tabela existente e valida o endpoint, as credenciais de acesso e a conexão de rede. Antes de executar o exemplo, defina region, instanceName e endpoint com base nas informações da sua instância. Defina tableName como o nome de uma tabela de dados existente no modelo Wide Column para verificar a conectividade.

import com.alicloud.openservices.tablestore.TunnelClient;
import com.alicloud.openservices.tablestore.core.auth.CredentialsProvider;
import com.alicloud.openservices.tablestore.core.auth.DefaultCredentialProvider;
import com.alicloud.openservices.tablestore.core.auth.DefaultCredentials;
import com.alicloud.openservices.tablestore.core.auth.V4Credentials;
import com.alicloud.openservices.tablestore.model.tunnel.ListTunnelRequest;
import com.alicloud.openservices.tablestore.model.tunnel.ListTunnelResponse;

public class InitTunnelClient {

    public static void main(String[] args) {
        String accessKeyId = System.getenv("TABLESTORE_ACCESS_KEY_ID");
        String accessKeySecret = System.getenv("TABLESTORE_ACCESS_KEY_SECRET");
        String region = "<region-id>";
        String instanceName = "<instance-name>";
        String endpoint = "<instance-endpoint>";
        String tableName = "<table-name>";

        TunnelClient tunnelClient = null;
        try {
            DefaultCredentials credentials = new DefaultCredentials(accessKeyId, accessKeySecret);
            V4Credentials credentialsV4 = V4Credentials.createByServiceCredentials(credentials, region);
            CredentialsProvider provider = new DefaultCredentialProvider(credentialsV4);

            tunnelClient = new TunnelClient(
                endpoint,
                provider,
                instanceName,
                null,
                null
            );

            ListTunnelResponse response = tunnelClient.listTunnel(new ListTunnelRequest(tableName));
            System.out.println("TunnelClient initialized. Tunnels: " + response.getTunnelInfos().size());
            System.out.println("RequestId: " + response.getRequestId());
        } finally {
            if (tunnelClient != null) {
                tunnelClient.shutdown();
            }
        }
    }
}

Parâmetros

Cliente

O construtor do TunnelClient tem os seguintes parâmetros.

Nome

Tipo

Descrição

endpoint (obrigatório)

String

Endpoint da instância do Tablestore. Use um endpoint de rede pública, VPC ou clássica compatível com a rede do cliente.

credsProvider (obrigatório)

CredentialsProvider

Provedor de credenciais. O exemplo usa um AccessKey ID, um AccessKey secret e o id da região da instância para criar credenciais V4.

instanceName (obrigatório)

String

Nome da instância do Tablestore.

config (opcional)

ClientConfiguration

Configuração do cliente. Se você definir este parâmetro como null, o sistema usará a configuração padrão. Especifique uma configuração personalizada para ajustar as definições de conexão, tempo limite ou nova tentativa.

resourceManager (opcional)

ResourceManager

Gerenciador de recursos para conexões e threads do cliente. Se este parâmetro for definido como null, o cliente atual cria e libera o gerenciador de recursos. Especifique um gerenciador compartilhado quando vários clientes precisarem compartilhar recursos subjacentes.

Configuração do cliente

O parâmetro config é do tipo ClientConfiguration. Use os métodos setXxx correspondentes para configurar as definições de conexão, tempo limite e nova tentativa. Se não forem necessárias configurações personalizadas, defina config como null. A tabela a seguir descreve as configurações comuns.

Nome

Tipo

Descrição

maxConnections (opcional)

int

Número máximo de conexões HTTP abertas. Valor padrão: 300.

ioThreadCount (opcional)

int

Quantidade de threads de E/S para o cliente HTTP assíncrono. O valor padrão corresponde ao número de processadores disponíveis no runtime.

connectionTimeoutInMillisecond (opcional)

int

Tempo limite para estabelecer uma conexão. Unidade: milissegundos. Valor padrão: 30000.

socketTimeoutInMillisecond (opcional)

int

Tempo limite para transmitir dados em uma conexão estabelecida. Unidade: milissegundos. Valor padrão: 30000.

connectionRequestTimeoutInMillisecond (opcional)

int

Tempo limite para obter uma conexão do pool de conexões. Unidade: milissegundos. Valor padrão: -1, que indica ausência de tempo limite específico.

retryThreadCount (opcional)

int

Número de threads para novas tentativas em caso de erro. Valor padrão: 1.

retryStrategy (opcional)

RetryStrategy

Estratégia de nova tentativa para solicitações. Valor padrão: DefaultRetryStrategy.

Outras configurações do cliente, como proxy, compactação, cache DNS, rastreamento de solicitações e sessões SSL, também são definidas pelos métodos correspondentes de ClientConfiguration.

Gerenciador de recursos

O parâmetro resourceManager é do tipo ResourceManager. Para um TunnelClient usado de forma independente, defina este parâmetro como null. O cliente cria um gerenciador de recursos com base em config e libera seus recursos ao chamar shutdown.

Para personalizar ou compartilhar recursos, use ResourceManager(ClientConfiguration configuration, ExecutorService callbackExecutor) para criar um ResourceManager proprietário. O construtor inclui os parâmetros listados abaixo.

Nome

Tipo

Descrição

configuration (opcional)

ClientConfiguration

Configuração do cliente usada para criar conexões HTTP e threads de nova tentativa. Se este parâmetro for definido como null, o sistema aplicará a configuração padrão.

callbackExecutor (opcional)

ExecutorService

Pool de threads responsável por executar callbacks assíncronos. Quando definido como null, o SDK cria o pool de threads padrão. Esse pool é encerrado juntamente com o ResourceManager proprietário durante o shutdown.

Exemplos de cenários

Personalizar a configuração do cliente

Para ajustar as configurações padrão de conexão, tempo limite ou nova tentativa, importe ClientConfiguration no exemplo básico e substitua o código de inicialização do cliente pelo trecho a seguir:

ClientConfiguration config = new ClientConfiguration();
config.setMaxConnections(200);
config.setConnectionTimeoutInMillisecond(10000);
config.setSocketTimeoutInMillisecond(30000);
config.setRetryThreadCount(2);

tunnelClient = new TunnelClient(
    endpoint,
    provider,
    instanceName,
    config,
    null
);

Compartilhar recursos do cliente

Se múltiplos clientes precisarem compartilhar conexões HTTP, threads de nova tentativa e threads de callback, crie um ResourceManager proprietário e passe a instância compartilhada retornada por sharedResourceManager() para cada cliente. Após fechar todos os clientes, encerre também o ResourceManager proprietário.

Importante

Não passe um ResourceManager proprietário diretamente para vários clientes. Caso contrário, quando qualquer cliente chamar shutdown, os recursos compartilhados serão liberados.

O código a seguir reutiliza as variáveis e o provedor de credenciais do exemplo básico. Importe ClientConfiguration e ResourceManager antes de executar o código.

ClientConfiguration config = new ClientConfiguration();
ResourceManager owner = new ResourceManager(config);
TunnelClient tunnelClientA = new TunnelClient(
    endpoint, provider, instanceName, config, owner.sharedResourceManager());
TunnelClient tunnelClientB = new TunnelClient(
    endpoint, provider, instanceName, config, owner.sharedResourceManager());

try {
    tunnelClientA.listTunnel(new ListTunnelRequest(tableName));
    tunnelClientB.listTunnel(new ListTunnelRequest(tableName));
} finally {
    tunnelClientA.shutdown();
    tunnelClientB.shutdown();
    owner.shutdown();
}