Tablestore SDK for Java utiliza un cliente dedicado para gestionar túneles e iniciar el consumo de datos. Inicialice el cliente con un nombre de instancia, un endpoint y las credenciales de acceso.
Requisitos previos
Instale Tablestore SDK for Java y configure las credenciales de acceso. El ejemplo utiliza la firma V4 y requiere la versión 5.17.5 o posterior.
Descripción de la función
TunnelClient es el cliente dedicado para Tunnel Service. Las operaciones de gestión de túneles y los workers de consumo de datos usan este cliente para acceder al servicio. Reutilice una instancia de cliente dentro de un proceso y llame a shutdown después de que finalicen todas las operaciones del túnel.
El siguiente constructor inicializa TunnelClient:
public TunnelClient(
String endpoint,
CredentialsProvider credsProvider,
String instanceName,
ClientConfiguration config,
ResourceManager resourceManager
)
El siguiente ejemplo usa la configuración predeterminada del cliente y un administrador de recursos exclusivo para inicializar TunnelClient. Posteriormente, envía una solicitud listTunnel de solo lectura para una tabla existente con el fin de validar el endpoint, las credenciales de acceso y la conexión de red. Antes de ejecutar el ejemplo, establezca region, instanceName y endpoint según la información de su instancia. Establezca tableName con el nombre de una tabla de datos existente en el modelo Wide Column para verificar la conectividad.
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
El constructor de TunnelClient incluye los siguientes parámetros.
|
Nombre |
Tipo |
Descripción |
|
endpoint (obligatorio) |
String |
Endpoint de la instancia de Tablestore. Use un endpoint de red pública, VPC o clásica que coincida con la red del cliente. |
|
credsProvider (obligatorio) |
CredentialsProvider |
Proveedor de credenciales. El ejemplo usa un AccessKey ID, un AccessKey secret y el ID de región de la instancia para crear credenciales V4. |
|
instanceName (obligatorio) |
String |
Nombre de la instancia de Tablestore. |
|
config (opcional) |
ClientConfiguration |
Configuración del cliente. Si establece este parámetro en |
|
resourceManager (opcional) |
ResourceManager |
Administrador de recursos para las conexiones y los hilos del cliente. Si establece este parámetro en |
Configuración del cliente
El parámetro config es del tipo ClientConfiguration. Use los métodos setXxx correspondientes para configurar los parámetros de conexión, tiempo de espera y reintentos. Si no necesita configuraciones personalizadas, establezca config en null. La siguiente tabla describe las configuraciones comunes.
|
Nombre |
Tipo |
Descripción |
|
maxConnections (opcional) |
int |
Número máximo de conexiones HTTP abiertas. Valor predeterminado: |
|
ioThreadCount (opcional) |
int |
Número de hilos de E/S para el cliente HTTP asíncrono. El valor predeterminado es el número de procesadores disponibles para el entorno de ejecución. |
|
connectionTimeoutInMillisecond (opcional) |
int |
Periodo de tiempo de espera para establecer una conexión. Unidad: milisegundos. Valor predeterminado: |
|
socketTimeoutInMillisecond (opcional) |
int |
Periodo de tiempo de espera para transmitir datos a través de una conexión establecida. Unidad: milisegundos. Valor predeterminado: |
|
connectionRequestTimeoutInMillisecond (opcional) |
int |
Periodo de tiempo de espera para obtener una conexión del pool de conexiones. Unidad: milisegundos. Valor predeterminado: |
|
retryThreadCount (opcional) |
int |
Número de hilos usados para los reintentos por error. Valor predeterminado: |
|
retryStrategy (opcional) |
RetryStrategy |
Estrategia de reintento de solicitudes. Valor predeterminado: |
Otros ajustes del cliente, como proxy, compresión, caché DNS, rastreo de solicitudes y configuración de sesiones SSL, también se configuran mediante los métodos correspondientes de ClientConfiguration.
Administrador de recursos
El parámetro resourceManager es del tipo ResourceManager. Para un TunnelClient usado de forma independiente, establezca este parámetro en null. El cliente crea un administrador de recursos basado en config y libera sus recursos al llamar a shutdown.
Para personalizar o compartir recursos, use ResourceManager(ClientConfiguration configuration, ExecutorService callbackExecutor) para crear un ResourceManager propietario. El constructor incluye los siguientes parámetros.
|
Nombre |
Tipo |
Descripción |
|
configuration (opcional) |
ClientConfiguration |
Configuración del cliente usada para crear conexiones HTTP e hilos de reintento. Si establece este parámetro en |
|
callbackExecutor (opcional) |
ExecutorService |
Pool de hilos usado para ejecutar callbacks asíncronos. Si establece este parámetro en |
Ejemplos de escenarios
Personalizar la configuración del cliente
Para ajustar la configuración predeterminada de conexión, tiempo de espera o reintentos, importe ClientConfiguration en el ejemplo básico y reemplace el código de inicialización del cliente con el siguiente código:
ClientConfiguration config = new ClientConfiguration();
config.setMaxConnections(200);
config.setConnectionTimeoutInMillisecond(10000);
config.setSocketTimeoutInMillisecond(30000);
config.setRetryThreadCount(2);
tunnelClient = new TunnelClient(
endpoint,
provider,
instanceName,
config,
null
);
Compartir recursos del cliente
Si varios clientes necesitan compartir conexiones HTTP, hilos de reintento e hilos de callback, cree un ResourceManager propietario y pase la instancia compartida devuelta por sharedResourceManager() a cada cliente. Después de cerrar todos los clientes, cierre el ResourceManager propietario.
No pase un ResourceManager propietario directamente a varios clientes. De lo contrario, cuando cualquier cliente llame a shutdown, se liberarán los recursos compartidos.
El siguiente código reutiliza las variables y el proveedor de credenciales del ejemplo básico. Importe ClientConfiguration y ResourceManager antes de ejecutar el 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();
}