すべてのプロダクト
Search
ドキュメントセンター

Tablestore:Initialize TunnelClient

最終更新日:Aug 01, 2026

Tablestore SDK for Java は、専用のクライアントを使用してトンネルの管理とデータ消費の開始を行います。インスタンス名、エンドポイント、アクセス認証情報を使用してクライアントを初期化します。

前提条件

Tablestore SDK for Java をインストールし、アクセス認証情報を設定します。この例では V4 署名を使用するため、バージョン 5.17.5 以降が必要です。

機能説明

TunnelClient は、トンネルサービス専用のクライアントです。トンネル管理操作とデータ消費ワーカーは、このクライアントを使用してサービスにアクセスします。プロセス内でクライアントインスタンスを再利用し、すべてのトンネル操作が完了したら shutdown を呼び出します。

次のコンストラクターは TunnelClient を初期化します:

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

次の例では、デフォルトのクライアント構成と専用のリソースマネージャーを使用して TunnelClient を初期化します。次に、既存のテーブルに対して読み取り専用の listTunnel リクエストを送信し、エンドポイント、アクセス認証情報、およびネットワーク接続を検証します。この例を実行する前に、ご利用のインスタンス情報に基づいて regioninstanceName、および endpoint を設定してください。接続性を検証するために、tableName を Wide Column モデルの既存のデータテーブルの名前に設定してください。

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

パラメーター

クライアント

TunnelClient のコンストラクターには、次のパラメーターが含まれています。

名前

説明

endpoint (必須)

String

Tablestore インスタンスのエンドポイント。クライアントのネットワークに合わせて、パブリックネットワーク、VPC、またはクラシックネットワークのエンドポイントを使用します。

credsProvider (必須)

CredentialsProvider

認証情報プロバイダー。この例では、AccessKey ID、AccessKey Secret、およびインスタンスのリージョン ID を使用して V4 認証情報を作成します。

instanceName (必須)

String

Tablestore インスタンスの名前。

config (任意)

ClientConfiguration

クライアント構成。このパラメーターを null に設定すると、デフォルトの構成が使用されます。接続、タイムアウト、またはリトライの設定を調整するには、カスタム構成を指定します。

resourceManager (任意)

ResourceManager

クライアントの接続とスレッドのためのリソースマネージャー。このパラメーターを null に設定すると、現在のクライアントがリソースマネージャーを作成およびリリースします。複数のクライアントが基盤となるリソースを共有する必要がある場合は、共有リソースマネージャーを指定します。

クライアント構成

config パラメーターは ClientConfiguration 型です。対応する setXxx メソッドを使用して、接続、タイムアウト、およびリトライの設定を構成します。カスタム設定が不要な場合は、confignull に設定します。次の表に、一般的な設定を示します。

名前

説明

maxConnections (任意)

int

オープン可能な HTTP 接続の最大数。デフォルト値: 300

ioThreadCount (任意)

int

非同期 HTTP クライアントの I/O スレッド数。デフォルト値は、ランタイムが利用可能なプロセッサの数です。

connectionTimeoutInMillisecond (任意)

int

接続を確立するためのタイムアウト期間。単位:ミリ秒。デフォルト値: 30000

socketTimeoutInMillisecond (任意)

int

確立された接続でデータを転送するためのタイムアウト期間。単位:ミリ秒。デフォルト値: 30000

connectionRequestTimeoutInMillisecond (任意)

int

接続プールから接続を取得するためのタイムアウト期間。単位:ミリ秒。デフォルト値: -1。これは、個別のタイムアウト期間が設定されていないことを示します。

retryThreadCount (任意)

int

エラーリトライに使用されるスレッド数。デフォルト値: 1

retryStrategy (任意)

RetryStrategy

リクエストのリトライ戦略。デフォルト値: DefaultRetryStrategy

プロキシ、圧縮、DNS キャッシュ、リクエストトレース、SSL セッション設定などの他のクライアント設定も、ClientConfiguration の対応するメソッドを使用して構成します。

リソースマネージャー

resourceManager パラメーターは ResourceManager 型です。独立して使用される TunnelClient の場合、このパラメーターを null に設定します。クライアントは config に基づいてリソースマネージャーを作成し、shutdown を呼び出すとリソースをリリースします。

リソースをカスタマイズまたは共有するには、ResourceManager(ClientConfiguration configuration, ExecutorService callbackExecutor) を使用して所有者の ResourceManager を作成します。このコンストラクターには、次のパラメーターが含まれています。

名前

説明

configuration (任意)

ClientConfiguration

HTTP 接続とリトライ用スレッドの作成に使用されるクライアント構成。このパラメーターを null に設定すると、デフォルトの構成が使用されます。

callbackExecutor (任意)

ExecutorService

非同期コールバックを実行するために使用されるスレッドプール。このパラメーターを null に設定すると、SDK はデフォルトのスレッドプールを作成します。所有者の ResourceManager がシャットダウンされると、スレッドプールもシャットダウンされます。

シナリオ例

クライアント構成のカスタマイズ

デフォルトの接続、タイムアウト、またはリトライ設定を調整するには、基本例で ClientConfiguration をインポートし、クライアントの初期化コードを次のコードに置き換えます:

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

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

クライアントリソースの共有

複数のクライアントが HTTP 接続、リトライ用スレッド、およびコールバック用スレッドを共有する必要がある場合は、所有者の ResourceManager を作成し、sharedResourceManager() によって返される共有インスタンスを各クライアントに渡します。すべてのクライアントを閉じた後、所有者の ResourceManager を閉じます。

重要

所有者の ResourceManager を複数のクライアントに直接渡さないでください。そうしないと、いずれかのクライアントが shutdown を呼び出したときに、共有リソースがリリースされてしまいます。

次のコードは、基本例の変数と認証情報プロバイダーを再利用します。コードを実行する前に、ClientConfigurationResourceManager をインポートしてください。

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