Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Configuración del cliente HTTP
De forma predeterminada, AWS SDK para Kotlin utiliza un cliente HTTP basado en OkHttp
aviso
Independientemente del motor HTTP que utilices, es posible que otras dependencias de tu proyecto tengan dependencias transitivas que entren en conflicto con la versión específica del motor que requiere el SDK. En concreto, se sabe que los marcos como Spring Boot gestionan las dependencias OkHttp y se basan en versiones anteriores al SDK. Consulte ¿Cómo resuelvo los conflictos de dependencia? para obtener más información.
nota
De forma predeterminada, cada cliente de servicio usa su propia copia de un cliente HTTP. Si utiliza varios servicios en la aplicación, puede que desee crear un único cliente HTTP y compartirlo entre todos los clientes del servicio.
Configuración básica
Al configurar un cliente de servicio, puede configurar el tipo de motor predeterminado. El SDK administra el motor de cliente HTTP resultante y lo cierra automáticamente cuando ya no es necesario.
El siguiente ejemplo muestra la configuración de un cliente HTTP durante la inicialización de un cliente de DynamoDB.
Importaciones
import aws.sdk.kotlin.services.dynamodb.DynamoDbClient import kotlin.time.Duration.Companion.seconds
Código
DynamoDbClient { region = "us-east-2" httpClient { maxConcurrency = 64u connectTimeout = 10.seconds } }.use { ddb -> // Perform some actions with Amazon DynamoDB. }
Configuración avanzada
La configuración HTTP predeterminada es adecuada para la mayoría de los casos de uso. Para algunos casos de uso avanzados, como los entornos de alto rendimiento, las siguientes opciones de configuración avanzada ofrecen funciones y capacidades adicionales:
Especifique un tipo de motor HTTP
Para especificar un tipo de motor HTTP no predeterminado o para personalizar la configuración específica de un tipo de motor HTTP concreto, puede pasar un parámetro adicional httpClient que especifique el tipo de motor.
En el siguiente ejemplo, se especifica lo OkHttpEngineque se puede usar para configurar la maxConcurrencyPerHostpropiedad.
Importaciones
import aws.sdk.kotlin.services.dynamodb.DynamoDbClient import aws.smithy.kotlin.runtime.http.engine.okhttp.OkHttpEngine
Código
DynamoDbClient { region = "us-east-2" httpClient(OkHttpEngine) { // The first parameter specifies the HTTP engine type. // The following parameter is generic HTTP configuration available in any engine type. maxConcurrency = 64u // The following parameter is OkHttp-specific configuration. maxConcurrencyPerHost = 32u } }.use { ddb -> // Perform some actions with Amazon DynamoDB. }
Los valores posibles para el tipo de motor son OkHttpEngine OkHttp4Engine, y CrtHttpEngine.
Para usar los parámetros de configuración específicos de un motor HTTP, debe agregar el motor como una dependencia en tiempo de compilación. Para elloOkHttpEngine, agrega la siguiente dependencia mediante Gradle.
(Puedes navegar hasta el X.Y.Z enlace para ver la última versión disponible).
implementation(platform("aws.smithy.kotlin:bom:X.Y.Z")) implementation("aws.smithy.kotlin:http-client-engine-okhttp")
Para elCrtHttpEngine, añada la siguiente dependencia.
implementation(platform("aws.smithy.kotlin:bom:X.Y.Z")) implementation("aws.smithy.kotlin:http-client-engine-crt")
Utilizar OkHttp4Engine
Use la opción predeterminada OkHttp4Engine si no puede usar la opción predeterminadaOkHttpEngine. El GitHub repositorio smithy-kotlinOkHttp4Engine
Utilice un cliente HTTP explícito
Cuando utilizas un cliente HTTP explícito, eres responsable de su vida útil, incluido el cierre cuando ya no lo necesites. Un cliente HTTP debe durar al menos tanto como cualquier cliente de servicio que lo utilice.
El siguiente ejemplo de código muestra el código que mantiene activo al cliente HTTP mientras DynamoDbClient está activo. La usefunción se asegura de que el cliente HTTP se cierre correctamente.
Importaciones
import aws.sdk.kotlin.services.dynamodb.DynamoDbClient import aws.smithy.kotlin.runtime.http.engine.okhttp.OkHttpEngine import kotlin.time.Duration.Companion.seconds
Código
OkHttpEngine { maxConcurrency = 64u connectTimeout = 10.seconds }.use { okHttpClient -> DynamoDbClient { region = "us-east-2" httpClient = okHttpClient }.use { ddb -> { // Perform some actions with Amazon DynamoDB. } } }
Supervisión de conexiones inactivas
OkHttpEngineofrece la opción connectionIdlePollingIntervalde configuración para supervisar las conexiones inactivas para su cierre remoto. Esta función detecta cuando los servicios tienen conexiones cerradas que aún se encuentran en el grupo de conexiones, lo que evita errores en las solicitudes posteriores.
Cuando connectionIdlePollingInterval se establece en un valor no nulo, el motor sondea las conexiones que se devuelven al conjunto de conexiones. El proceso de sondeo bloquea las lecturas con el tiempo de espera del socket establecido en el intervalo especificado. El sondeo se cancela automáticamente cuando el motor adquiere la conexión del grupo o cuando la conexión se desaloja y se cierra.
Si este valor es null (el predeterminado), el sondeo se desactiva. Las conexiones inactivas del grupo que se cierran de forma remota pueden producir errores cuando se adquieren para llamadas posteriores.
nota
Como el ciclo de sondeo utiliza lecturas bloqueantes, las llamadas del motor para adquirir o cerrar una conexión pueden demorarse tanto como el connectionIdlePollingInterval intervalo. Si se elige un valor bajo para el intervalo, el SDK adquirirá las conexiones más rápido, a costa de un mayor uso de los recursos inactivos.
Importaciones
import aws.sdk.kotlin.services.s3.S3Client import aws.smithy.kotlin.runtime.http.engine.okhttp.OkHttpEngine import kotlin.time.Duration.Companion.milliseconds
Código
S3Client.fromEnvironment { httpEngine(OkHttpEngine) { connectionIdlePollingInterval = 50.milliseconds } }.use { s3 -> // Use the Amazon S3 client }