Tous les produits
Search
Centre de documentation

Tablestore:Initialize TunnelClient

Dernière mise à jour :Aug 19, 2026

Le SDK Tablestore pour Java utilise un client dédié pour gérer les tunnels et démarrer la consommation des données. Initialisez le client avec un nom d'instance, un endpoint et des identifiants d'accès.

Prérequis

Installez le SDK Tablestore pour Java et configurez les identifiants d'accès. L'exemple utilise la signature V4 et nécessite la version 5.17.5 ou ultérieure.

Description de la fonctionnalité

TunnelClient est le client dédié au service Tunnel. Les opérations de gestion des tunnels et les workers de consommation de données utilisent ce client pour accéder au service. Réutilisez une instance de client au sein d'un processus et appelez shutdown une fois toutes les opérations de tunnel terminées.

Le constructeur suivant initialise TunnelClient :

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

L'exemple suivant utilise la configuration de client par défaut et un gestionnaire de ressources exclusif pour initialiser TunnelClient. Il envoie ensuite une requête listTunnel en lecture seule pour une table existante afin de valider l'endpoint, les identifiants d'accès et la connexion réseau. Avant d'exécuter l'exemple, définissez region, instanceName et endpoint en fonction des informations de votre instance. Définissez tableName sur le nom d'une table de données existante dans le modèle Wide Column pour vérifier la connectivité.

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();
            }
        }
    }
}

Paramètres

Client

Le constructeur TunnelClient contient les paramètres suivants.

Nom

Type

Description

endpoint (obligatoire)

String

L'endpoint de l'instance Tablestore. Utilisez un endpoint public, VPC ou de réseau classique correspondant au réseau du client.

credsProvider (obligatoire)

CredentialsProvider

Le fournisseur d'identifiants. L'exemple utilise un AccessKey ID, un AccessKey secret et l'ID de région de l'instance pour créer des identifiants V4.

instanceName (obligatoire)

String

Le nom de l'instance Tablestore.

config (facultatif)

ClientConfiguration

La configuration du client. Si vous définissez ce paramètre sur null, la configuration par défaut est utilisée. Spécifiez une configuration personnalisée pour ajuster les paramètres de connexion, de délai d'attente ou de nouvelle tentative.

resourceManager (facultatif)

ResourceManager

Le gestionnaire de ressources pour les connexions client et les threads. Si vous définissez ce paramètre sur null, le client actuel crée et libère le gestionnaire de ressources. Spécifiez un gestionnaire de ressources partagé lorsque plusieurs clients doivent partager les ressources sous-jacentes.

Configuration du client

Le paramètre config est de type ClientConfiguration. Utilisez les méthodes setXxx correspondantes pour configurer les paramètres de connexion, de délai d'attente et de nouvelle tentative. Si vous n'avez pas besoin de paramètres personnalisés, définissez config sur null. Le tableau suivant décrit les paramètres courants.

Nom

Type

Description

maxConnections (facultatif)

int

Le nombre maximal de connexions HTTP ouvertes. Valeur par défaut : 300.

ioThreadCount (facultatif)

int

Le nombre de threads d'E/S pour le client HTTP asynchrone. La valeur par défaut correspond au nombre de processeurs disponibles pour l'environnement d'exécution.

connectionTimeoutInMillisecond (facultatif)

int

Le délai d'attente pour l'établissement d'une connexion. Unité : millisecondes. Valeur par défaut : 30000.

socketTimeoutInMillisecond (facultatif)

int

Le délai d'attente pour la transmission des données sur une connexion établie. Unité : millisecondes. Valeur par défaut : 30000.

connectionRequestTimeoutInMillisecond (facultatif)

int

Le délai d'attente pour l'obtention d'une connexion depuis le pool de connexions. Unité : millisecondes. Valeur par défaut : -1, ce qui indique qu'aucun délai d'attente distinct n'est configuré.

retryThreadCount (facultatif)

int

Le nombre de threads utilisés pour les nouvelles tentatives en cas d'erreur. Valeur par défaut : 1.

retryStrategy (facultatif)

RetryStrategy

La stratégie de nouvelle tentative des requêtes. Valeur par défaut : DefaultRetryStrategy.

D'autres paramètres client, tels que le proxy, la compression, le cache DNS, le traçage des requêtes et les paramètres de session SSL, sont également configurés à l'aide des méthodes correspondantes de ClientConfiguration.

Gestionnaire de ressources

Le paramètre resourceManager est de type ResourceManager. Pour un TunnelClient utilisé de manière indépendante, définissez ce paramètre sur null. Le client crée un gestionnaire de ressources basé sur config et libère ses ressources lorsque vous appelez shutdown.

Pour personnaliser ou partager des ressources, utilisez ResourceManager(ClientConfiguration configuration, ExecutorService callbackExecutor) pour créer un ResourceManager propriétaire. Le constructeur contient les paramètres suivants.

Nom

Type

Description

configuration (facultatif)

ClientConfiguration

La configuration du client utilisée pour créer les connexions HTTP et les threads de nouvelle tentative. Si vous définissez ce paramètre sur null, la configuration par défaut est utilisée.

callbackExecutor (facultatif)

ExecutorService

Le pool de threads utilisé pour exécuter les rappels asynchrones. Si vous définissez ce paramètre sur null, le SDK crée le pool de threads par défaut. Le pool de threads est arrêté lorsque le ResourceManager propriétaire est arrêté.

Exemples de scénarios

Personnaliser la configuration du client

Pour ajuster les paramètres par défaut de connexion, de délai d'attente ou de nouvelle tentative, importez ClientConfiguration dans l'exemple de base et remplacez le code d'initialisation du client par le code suivant :

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

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

Partager les ressources du client

Si plusieurs clients doivent partager des connexions HTTP, des threads de nouvelle tentative et des threads de rappel, créez un ResourceManager propriétaire et transmettez l'instance partagée renvoyée par sharedResourceManager() à chaque client. Après avoir fermé tous les clients, fermez le ResourceManager propriétaire.

Important

Ne transmettez pas directement un ResourceManager propriétaire à plusieurs clients. Sinon, lorsque n'importe quel client appelle shutdown, les ressources partagées sont libérées.

Le code suivant réutilise les variables et le fournisseur d'identifiants de l'exemple de base. Importez ClientConfiguration et ResourceManager avant d'exécuter le code.

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();
}