Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Configurazione del client HTTP
Per impostazione predefinita, AWS SDK per Kotlin utilizza un client HTTP basato su OkHttp
avvertimento
Indipendentemente dal motore HTTP utilizzato, altre dipendenze del progetto potrebbero avere dipendenze transitive in conflitto con la versione specifica del motore richiesta dall'SDK. In particolare, è noto che framework come Spring Boot gestiscono dipendenze come OkHttp e si basano su versioni precedenti all'SDK. Per ulteriori informazioni, consulta la paginaCome posso risolvere i conflitti di dipendenza?.
Nota
Per impostazione predefinita, ogni client di servizio utilizza la propria copia di un client HTTP. Se utilizzi più servizi nella tua applicazione, potresti voler creare un singolo client HTTP e condividerlo tra tutti i client di servizio.
Configurazione di base
Quando configuri un client di servizio, puoi configurare il tipo di motore predefinito. L'SDK gestisce il motore client HTTP risultante e lo chiude automaticamente quando non è più necessario.
L'esempio seguente mostra la configurazione di un client HTTP durante l'inizializzazione di un client DynamoDB.
Importazioni
import aws.sdk.kotlin.services.dynamodb.DynamoDbClient import kotlin.time.Duration.Companion.seconds
Codice
DynamoDbClient { region = "us-east-2" httpClient { maxConcurrency = 64u connectTimeout = 10.seconds } }.use { ddb -> // Perform some actions with Amazon DynamoDB. }
Configurazione avanzata
La configurazione HTTP predefinita è adatta alla maggior parte dei casi d'uso. Per alcuni casi d'uso avanzati, come gli ambienti ad alto throughput, le seguenti opzioni di configurazione avanzate offrono funzionalità e funzionalità aggiuntive:
Specificare un tipo di motore HTTP
Per specificare un tipo di motore HTTP non predefinito o per personalizzare una configurazione specifica per un particolare tipo di motore HTTP, puoi passare un parametro aggiuntivo httpClient che specifica il tipo di motore.
L'esempio seguente specifica OkHttpEngineciò che è possibile utilizzare per configurare la proprietà. maxConcurrencyPerHost
Importazioni
import aws.sdk.kotlin.services.dynamodb.DynamoDbClient import aws.smithy.kotlin.runtime.http.engine.okhttp.OkHttpEngine
Codice
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. }
I valori possibili per il tipo di motore sono OkHttpEngine OkHttp4Engine, e CrtHttpEngine.
Per utilizzare i parametri di configurazione specifici di un motore HTTP, è necessario aggiungere il motore come dipendenza in fase di compilazione. Per ilOkHttpEngine, aggiungi la seguente dipendenza usando Gradle.
(Puoi accedere al X.Y.Z link per vedere l'ultima versione disponibile.)
implementation(platform("aws.smithy.kotlin:bom:X.Y.Z")) implementation("aws.smithy.kotlin:http-client-engine-okhttp")
Per ilCrtHttpEngine, aggiungi la seguente dipendenza.
implementation(platform("aws.smithy.kotlin:bom:X.Y.Z")) implementation("aws.smithy.kotlin:http-client-engine-crt")
Utilizzo della OkHttp4Engine
Usa il OkHttp4Engine se non puoi usare l'impostazione predefinitaOkHttpEngine. Il GitHub repository smithy-kotlinOkHttp4Engine
Usa un client HTTP esplicito
Quando utilizzi un client HTTP esplicito, sei responsabile della sua durata, inclusa la chiusura quando non ne hai più bisogno. Un client HTTP deve funzionare almeno quanto qualsiasi client di servizio che lo utilizza.
Il seguente esempio di codice mostra il codice che mantiene attivo il client HTTP mentre DynamoDbClient è attivo. La usefunzione assicura che il client HTTP si chiuda correttamente.
Importazioni
import aws.sdk.kotlin.services.dynamodb.DynamoDbClient import aws.smithy.kotlin.runtime.http.engine.okhttp.OkHttpEngine import kotlin.time.Duration.Companion.seconds
Codice
OkHttpEngine { maxConcurrency = 64u connectTimeout = 10.seconds }.use { okHttpClient -> DynamoDbClient { region = "us-east-2" httpClient = okHttpClient }.use { ddb -> { // Perform some actions with Amazon DynamoDB. } } }
Monitoraggio della connessione inattiva
OkHttpEnginefornisce l'opzione connectionIdlePollingIntervaldi configurazione per monitorare le connessioni inattive per la chiusura remota. Questa funzionalità rileva quando i servizi hanno connessioni chiuse che si trovano ancora nel pool di connessioni, prevenendo errori nelle richieste successive.
Quando connectionIdlePollingInterval è impostato su un valore non nullo, il motore esegue il polling delle connessioni che vengono rilasciate nuovamente al pool di connessioni. Il processo di polling esegue il blocco delle letture con il timeout del socket impostato sull'intervallo specificato. Il polling viene annullato automaticamente quando il motore acquisisce la connessione dal pool o quando la connessione viene eliminata e chiusa.
Quando questo valore è null (impostazione predefinita), il polling è disabilitato. Le connessioni inattive nel pool chiuse in remoto possono riscontrare errori quando vengono acquisite per le chiamate successive.
Nota
Poiché il poling loop utilizza letture bloccanti, le chiamate del motore per acquisire o chiudere una connessione possono subire un ritardo pari all'intervallo. connectionIdlePollingInterval La scelta di un valore basso per l'intervallo significa che l'SDK acquisirà connessioni più velocemente, a scapito di un maggiore utilizzo delle risorse inattive.
Importazioni
import aws.sdk.kotlin.services.s3.S3Client import aws.smithy.kotlin.runtime.http.engine.okhttp.OkHttpEngine import kotlin.time.Duration.Companion.milliseconds
Codice
S3Client.fromEnvironment { httpEngine(OkHttpEngine) { connectionIdlePollingInterval = 50.milliseconds } }.use { s3 -> // Use the Amazon S3 client }