View a markdown version of this page

Konfigurasikan klien HTTP berbasis Apache 5.x - AWS SDK for Java 2.x

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Konfigurasikan klien HTTP berbasis Apache 5.x

SDK Apache5HttpClient didasarkan pada Apache HttpClient 5.x.

Akses Apache5HttpClient

Dalam kebanyakan situasi, Anda menggunakan Apache5HttpClient tanpa konfigurasi eksplisit. Anda mendeklarasikan klien layanan Anda dan SDK akan mengonfigur Apache5HttpClient asinya dengan nilai standar untuk Anda.

Jika Anda ingin mengkonfigurasi secara eksplisit Apache5HttpClient atau menggunakannya dengan beberapa klien layanan, Anda harus membuatnya tersedia untuk konfigurasi.

Tidak diperlukan konfigurasi

Saat Anda mendeklarasikan ketergantungan pada klien layanan di Maven, SDK menambahkan dependen si runtime pada apache5-client artefak. Ini membuat Apache5HttpClient kelas tersedia untuk kode Anda saat runtime, tetapi tidak pada waktu kompilasi. Jika Anda tidak mengkonfigurasi klien Apache-based HTTP, Anda tidak perlu menentukan ketergantungan untuk itu.

Dalam cuplikan XML berikut dari pom.xml file Maven, ketergantungan yang dideklarasikan dengan <artifactId>s3</artifactId> secara otomatis membawa klien Apache-based HTTP. Anda tidak perlu mendeklarasikan ketergantungan khusus untuk itu.

<dependencyManagement> <dependencies> <dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>bom</artifactId> <version>2.54.0*</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <dependencies> <!-- The s3 dependency automatically adds a runtime dependency on the Apache5HttpClient--> <dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>s3</artifactId> </dependency> </dependencies>

*Ganti versi yang ditampilkan dengan warna merah dengan versi Java SDK yang ingin Anda gunakan. Temukan yang terbaru di Maven Central.

Dengan dependensi ini, Anda tidak dapat membuat perubahan konfigurasi HTTP eksplisit, karena pust Apache5HttpClient aka hanya ada di classpath runtime.

Konfigurasi yang dibutuhkan

Untuk mengkonfigurasiApache5HttpClient, Anda perlu menambahkan ketergantungan pada per apache5-client pustakaan pada waktu kompilasi.

Lihat contoh berikut dari pom.xml file Maven untuk mengkonfigurasiApache5HttpClient.

<dependencyManagement> <dependencies> <dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>bom</artifactId> <version>2.54.0*</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <dependencies> <dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>s3</artifactId> </dependency> <!-- By adding the apache5-client dependency, Apache5HttpClient will be added to the compile classpath so you can configure it. --> <dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>apache5-client</artifactId> </dependency> </dependencies>

*Ganti versi yang ditampilkan dengan warna merah dengan versi Java SDK yang ingin Anda gunakan. Temukan yang terbaru di Maven Central.

Gunakan dan konfigurasikan Apache5HttpClient

Anda dapat mengonfigurasi instance Apache5HttpClient bersama dengan membangun klien layanan, atau Anda dapat mengonfigurasi satu instance untuk berbagi di beberapa klien layanan.

Dengan kedua pendekatan, Anda menggunakan Apache5HttpClient.Builder untuk mengkonfigurasi properti untuk klien HTTP berbasis Apache 5.

Praktik terbaik: mendedikasikan Apache5HttpClient instance untuk klien layanan

Jika Anda perlu mengonfigurasi instanceApache5HttpClient, kami sarankan Anda membangun Apache5HttpClient instance khusus. Anda dapat melakukannya dengan menggunakan ClientBuilder metode http dari pembangun klien layanan. Dengan cara ini, siklus hidup klien HTTP dikelola oleh SDK, yang membantu menghindari potensi kebocoran memori jika Apache5HttpClient instance tidak ditutup saat tidak lagi diperlukan.

Contoh berikut membuat S3Client dan mengonfigurasi instance tertanam Apache5HttpClient dengan nilai MaxConnections dan ConnectionTimeout. Instance HTTP dibuat menggunakan httpClientBuilder metodeS3Client.Builder.

Impor

import software.amazon.awssdk.http.apache5.Apache5HttpClient; import software.amazon.awssdk.services.s3.S3Client; import java.time.Duration;

Kode

S3Client s3Client = S3Client // Singleton: Use the s3Client for all requests. .builder() .httpClientBuilder(Apache5HttpClient.builder() .maxConnections(100) .connectionTimeout(Duration.ofSeconds(5)) ) .build(); // Perform work with the s3Client. s3Client.close(); // Requests completed: Close all service clients.

Pendekatan alternatif: bagikan Apache5HttpClient contoh

Untuk membantu menjaga penggunaan sumber daya dan memori lebih rendah untuk aplikasi Anda, Anda dapat mengonfigurasi Apache5HttpClient dan membagikannya di beberapa klien layanan. Kumpulan koneksi HTTP akan dibagikan, yang menurunkan penggunaan sumber daya.

catatan

Saat Apache5HttpClient instance dibagikan, Anda harus menutupnya saat instans siap untuk dibuang. SDK tidak akan menutup instance saat klien layanan ditutup.

Contoh berikut mengkonfigurasi klien Apache-based HTTP yang digunakan oleh dua klien layanan. Instance yang dikonfigurasi Apache5HttpClient diteruskan ke metode HttpClient dari setiap builder. Ketika klien layanan dan klien HTTP tidak lagi diperlukan, kode secara eksplisit menutupnya. Kode menutup klien HTTP terakhir.

Impor

import software.amazon.awssdk.http.SdkHttpClient; import software.amazon.awssdk.http.apache5.Apache5HttpClient; import software.amazon.awssdk.services.dynamodb.DynamoDbClient; import software.amazon.awssdk.services.s3.S3Client;

Kode

SdkHttpClient apache5HttpClient = Apache5HttpClient.builder() .maxConnections(100).build(); // Singletons: Use the s3Client and dynamoDbClient for all requests. S3Client s3Client = S3Client.builder() .httpClient(apache5HttpClient).build(); DynamoDbClient dynamoDbClient = DynamoDbClient.builder() .httpClient(apache5HttpClient).build(); // Perform work with the s3Client and dynamoDbClient. // Requests completed: Close all service clients. s3Client.close(); dynamoDbClient.close(); apache5HttpClient.close(); // Explicitly close apache5HttpClient.