All Products
Search
Document Center

Tablestore:Inisialisasi TunnelClient

Last Updated:Aug 01, 2026

Tablestore SDK for Java menggunakan client khusus untuk mengelola tunnel dan memulai konsumsi data. Inisialisasi client dilakukan dengan menyediakan nama instans, titik akhir, dan kredensial akses.

Prasyarat

Instal Tablestore SDK for Java dan konfigurasikan kredensial akses. Contoh ini menggunakan penandatanganan V4 dan memerlukan versi 5.17.5 atau yang lebih baru.

Deskripsi fitur

TunnelClient adalah client khusus untuk Tunnel Service. Operasi manajemen tunnel dan worker konsumsi data menggunakan client ini untuk mengakses layanan. Gunakan kembali instans client dalam satu proses, dan panggil shutdown setelah semua operasi tunnel selesai.

Konstruktor berikut menginisialisasi TunnelClient:

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

Contoh berikut menggunakan konfigurasi client default dan resource manager eksklusif untuk menginisialisasi TunnelClient. Contoh tersebut kemudian mengirim permintaan listTunnel read-only untuk tabel yang sudah ada guna memvalidasi titik akhir, kredensial akses, dan koneksi jaringan. Sebelum menjalankan contoh ini, atur region, instanceName, dan endpoint sesuai dengan informasi instans Anda. Atur juga tableName ke nama tabel data yang sudah ada dalam Model Kolom Lebar untuk verifikasi konektivitas.

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 diinisialisasi. Jumlah tunnel: " + response.getTunnelInfos().size());
            System.out.println("RequestId: " + response.getRequestId());
        } finally {
            if (tunnelClient != null) {
                tunnelClient.shutdown();
            }
        }
    }
}

Parameter

Client

Konstruktor TunnelClient mencakup parameter berikut.

Nama

Tipe

Deskripsi

endpoint (wajib)

String

Titik akhir instans Tablestore. Gunakan titik akhir publik, VPC, atau jaringan klasik yang sesuai dengan jaringan client.

credsProvider (wajib)

CredentialsProvider

Penyedia kredensial. Contoh ini menggunakan ID AccessKey, Rahasia AccessKey, dan ID wilayah instans untuk membuat kredensial V4.

instanceName (wajib)

String

Nama instans Tablestore.

config (opsional)

ClientConfiguration

Konfigurasi client. Jika Anda mengatur parameter ini ke null, konfigurasi default akan digunakan. Tentukan konfigurasi kustom untuk menyesuaikan pengaturan koneksi, timeout, atau retry.

resourceManager (opsional)

ResourceManager

Manajer resource untuk koneksi dan thread client. Jika Anda mengatur parameter ini ke null, client saat ini akan membuat dan melepaskan manajer resource. Tentukan manajer resource bersama ketika beberapa client perlu berbagi resource dasar.

Konfigurasi client

Parameter config bertipe ClientConfiguration. Gunakan metode setXxx yang sesuai untuk mengonfigurasi pengaturan koneksi, timeout, dan retry. Jika tidak memerlukan pengaturan kustom, atur config ke null. Tabel berikut menjelaskan pengaturan umum.

Nama

Type

Deskripsi

maxConnections (opsional)

int

Jumlah maksimum koneksi HTTP terbuka. Nilai default: 300.

ioThreadCount (opsional)

int

Jumlah thread I/O untuk client HTTP asinkron. Nilai default adalah jumlah prosesor yang tersedia pada waktu proses.

connectionTimeoutInMillisecond (opsional)

int

Periode timeout untuk membangun koneksi. Satuan: milidetik. Nilai default: 30000.

socketTimeoutInMillisecond (opsional)

int

Periode timeout untuk mentransmisikan data melalui koneksi yang telah dibangun. Satuan: milidetik. Nilai default: 30000.

connectionRequestTimeoutInMillisecond (opsional)

int

Periode timeout untuk mendapatkan koneksi dari kolam koneksi. Satuan: milidetik. Nilai default: -1, yang menunjukkan bahwa tidak ada periode timeout terpisah yang dikonfigurasi.

retryThreadCount (opsional)

int

Jumlah thread yang digunakan untuk retry kesalahan. Nilai default: 1.

retryStrategy (opsional)

RetryStrategy

Strategi retry permintaan. Nilai default: DefaultRetryStrategy.

Pengaturan client lainnya, seperti proxy, kompresi, cache DNS, pelacakan permintaan, dan pengaturan sesi SSL, juga dikonfigurasi menggunakan metode yang sesuai dari ClientConfiguration.

Manajer resource

Parameter resourceManager bertipe ResourceManager. Untuk TunnelClient yang digunakan secara independen, atur parameter ini ke null. Client akan membuat manajer resource berdasarkan config dan melepaskan resource-nya saat Anda memanggil shutdown.

Untuk menyesuaikan atau berbagi resource, gunakan ResourceManager(ClientConfiguration configuration, ExecutorService callbackExecutor) untuk membuat ResourceManager pemilik. Konstruktor tersebut mencakup parameter berikut.

Nama

Tipe

Deskripsi

configuration (opsional)

ClientConfiguration

Konfigurasi client yang digunakan untuk membuat koneksi HTTP dan thread retry. Jika Anda mengatur parameter ini ke null, konfigurasi default akan digunakan.

callbackExecutor (opsional)

ExecutorService

Kolam thread yang digunakan untuk menjalankan callback asinkron. Jika Anda mengatur parameter ini ke null, SDK akan membuat kolam thread default. Kolam thread tersebut dimatikan ketika ResourceManager pemilik dimatikan.

Contoh skenario

Menyesuaikan konfigurasi client

Untuk menyesuaikan pengaturan koneksi, timeout, atau retry default, impor ClientConfiguration dalam contoh dasar dan ganti kode inisialisasi client dengan kode berikut:

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

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

Berbagi resource client

Jika beberapa client perlu berbagi koneksi HTTP, thread retry, dan thread callback, buat ResourceManager pemilik dan berikan instans bersama yang dikembalikan oleh sharedResourceManager() ke setiap client. Setelah menutup semua client, tutup ResourceManager pemilik.

Penting

Jangan memberikan ResourceManager pemilik secara langsung ke beberapa client. Jika tidak, ketika salah satu client memanggil shutdown, resource bersama akan dilepaskan.

Kode berikut menggunakan kembali variabel dan penyedia kredensial dari contoh dasar. Impor ClientConfiguration dan ResourceManager sebelum menjalankan kode.

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