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 |
|
resourceManager (opsional) |
ResourceManager |
Manajer resource untuk koneksi dan thread client. Jika Anda mengatur parameter ini ke |
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: |
|
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: |
|
socketTimeoutInMillisecond (opsional) |
int |
Periode timeout untuk mentransmisikan data melalui koneksi yang telah dibangun. Satuan: milidetik. Nilai default: |
|
connectionRequestTimeoutInMillisecond (opsional) |
int |
Periode timeout untuk mendapatkan koneksi dari kolam koneksi. Satuan: milidetik. Nilai default: |
|
retryThreadCount (opsional) |
int |
Jumlah thread yang digunakan untuk retry kesalahan. Nilai default: |
|
retryStrategy (opsional) |
RetryStrategy |
Strategi retry permintaan. Nilai default: |
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 |
|
callbackExecutor (opsional) |
ExecutorService |
Kolam thread yang digunakan untuk menjalankan callback asinkron. Jika Anda mengatur parameter ini ke |
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.
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();
}