Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
HTTP-Client-Konfiguration
Standardmäßig AWS SDK für Kotlin verwendet der einen HTTP-Client, der auf basiert OkHttp
Warnung
Unabhängig davon, welche HTTP-Engine Sie verwenden, können andere Abhängigkeiten in Ihrem Projekt transitive Abhängigkeiten aufweisen, die mit der spezifischen Engine-Version in Konflikt stehen, die für das SDK erforderlich ist. Insbesondere Frameworks wie Spring Boot sind dafür bekannt, Abhängigkeiten wie das SDK zu verwalten OkHttp und sich auf ältere Versionen als das SDK zu verlassen. Weitere Informationen Wie löse ich Abhängigkeitskonflikte? finden Sie unter.
Anmerkung
Standardmäßig verwendet jeder Service-Client seine eigene Kopie eines HTTP-Clients. Wenn Sie in Ihrer Anwendung mehrere Dienste verwenden, möchten Sie möglicherweise einen einzelnen HTTP-Client erstellen und ihn für alle Dienstclients gemeinsam nutzen.
Basiskonfiguration
Wenn Sie einen Service-Client konfigurieren, können Sie den Standard-Engine-Typ konfigurieren. Das SDK verwaltet die resultierende HTTP-Client-Engine und schließt sie automatisch, wenn sie nicht mehr benötigt wird.
Das folgende Beispiel zeigt die Konfiguration eines HTTP-Clients während der Initialisierung eines DynamoDB-Clients.
Importe
import aws.sdk.kotlin.services.dynamodb.DynamoDbClient import kotlin.time.Duration.Companion.seconds
Code
DynamoDbClient { region = "us-east-2" httpClient { maxConcurrency = 64u connectTimeout = 10.seconds } }.use { ddb -> // Perform some actions with Amazon DynamoDB. }
Erweiterte Konfiguration
Die Standard-HTTP-Konfiguration ist für die meisten Anwendungsfälle geeignet. Für einige erweiterte Anwendungsfälle, wie z. B. Umgebungen mit hohem Durchsatz, bieten die folgenden erweiterten Konfigurationsoptionen zusätzliche Funktionen und Möglichkeiten:
Geben Sie einen HTTP-Engine-Typ an
Um einen nicht standardmäßigen HTTP-Engine-Typ anzugeben oder um die Konfiguration anzupassen, die für einen bestimmten HTTP-Engine-Typ spezifisch ist, können Sie einen zusätzlichen Parameter übergeben, der den Engine-Typ httpClient angibt.
Das folgende Beispiel gibt den an OkHttpEngine, den Sie zur Konfiguration der maxConcurrencyPerHostEigenschaft verwenden können.
Importe
import aws.sdk.kotlin.services.dynamodb.DynamoDbClient import aws.smithy.kotlin.runtime.http.engine.okhttp.OkHttpEngine
Code
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. }
Die möglichen Werte für den Motortyp sind OkHttpEngine OkHttp4Engine, und CrtHttpEngine.
Um für eine HTTP-Engine spezifische Konfigurationsparameter zu verwenden, müssen Sie die Engine als Abhängigkeit zur Kompilierzeit hinzufügen. Für die OkHttpEngine fügen Sie mit Gradle die folgende Abhängigkeit hinzu.
(Sie können zum X.Y.Z Link navigieren, um die neueste verfügbare Version zu sehen.)
implementation(platform("aws.smithy.kotlin:bom:X.Y.Z")) implementation("aws.smithy.kotlin:http-client-engine-okhttp")
Fügen Sie für CrtHttpEngine die die folgende Abhängigkeit hinzu.
implementation(platform("aws.smithy.kotlin:bom:X.Y.Z")) implementation("aws.smithy.kotlin:http-client-engine-crt")
Verwenden der OkHttp4Engine
Verwenden Sie dieOkHttp4Engine, wenn Sie die Standardeinstellung nicht verwenden könnenOkHttpEngine. Das GitHub Smithy-Kotlin-RepositoryOkHttp4Engine
Verwenden Sie einen expliziten HTTP-Client
Wenn Sie einen expliziten HTTP-Client verwenden, sind Sie für dessen Lebensdauer verantwortlich, einschließlich dessen Schließung, wenn Sie ihn nicht mehr benötigen. Ein HTTP-Client muss mindestens so lange aktiv sein wie jeder Service-Client, der ihn verwendet.
Das folgende Codebeispiel zeigt Code, der dafür sorgt, dass der HTTP-Client aktiv bleibt, solange der aktiv DynamoDbClient ist. Die useFunktion stellt sicher, dass der HTTP-Client ordnungsgemäß geschlossen wird.
Importe
import aws.sdk.kotlin.services.dynamodb.DynamoDbClient import aws.smithy.kotlin.runtime.http.engine.okhttp.OkHttpEngine import kotlin.time.Duration.Companion.seconds
Code
OkHttpEngine { maxConcurrency = 64u connectTimeout = 10.seconds }.use { okHttpClient -> DynamoDbClient { region = "us-east-2" httpClient = okHttpClient }.use { ddb -> { // Perform some actions with Amazon DynamoDB. } } }
Überwachung inaktiver Verbindungen
OkHttpEnginebietet die connectionIdlePollingIntervalKonfigurationsoption zur Überwachung inaktiver Verbindungen für das Schließen per Fernzugriff. Diese Funktion erkennt, wenn Dienste Verbindungen geschlossen haben, die sich noch im Verbindungspool befinden, und verhindert so Fehler bei nachfolgenden Anfragen.
Wenn der Wert auf einen Wert ungleich Null gesetzt connectionIdlePollingInterval ist, fragt die Engine Verbindungen, die freigegeben wurden, zurück zum Verbindungspool. Bei der Abfrage werden Lesevorgänge blockiert, wobei das Socket-Timeout auf das angegebene Intervall eingestellt ist. Die Abfrage wird automatisch abgebrochen, wenn die Engine die Verbindung aus dem Pool bezieht oder wenn die Verbindung gelöscht und geschlossen wird.
Wenn dieser Wert null (Standard) ist, ist das Polling deaktiviert. Bei inaktiven Verbindungen im Pool, die remote geschlossen wurden, können Fehler auftreten, wenn sie für nachfolgende Aufrufe abgerufen werden.
Anmerkung
Da die Abfrageschleife blockierende Lesevorgänge verwendet, können Engine-Aufrufe zum Herstellen oder Schließen einer Verbindung um das connectionIdlePollingInterval Intervall verzögert werden. Wenn Sie für das Intervall einen niedrigen Wert wählen, nimmt das SDK schneller Verbindungen auf, allerdings auf Kosten einer höheren Ressourcenauslastung im Leerlauf.
Importe
import aws.sdk.kotlin.services.s3.S3Client import aws.smithy.kotlin.runtime.http.engine.okhttp.OkHttpEngine import kotlin.time.Duration.Companion.milliseconds
Code
S3Client.fromEnvironment { httpEngine(OkHttpEngine) { connectionIdlePollingInterval = 50.milliseconds } }.use { s3 -> // Use the Amazon S3 client }