Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
HTTPclients
Vous pouvez modifier le HTTP client à utiliser pour votre client de service ainsi que modifier la configuration par défaut pour les HTTP clients dotés du AWS SDK for Java 2.x. Cette section décrit HTTP les clients et les paramètres duSDK.
HTTPclients disponibles dans le SDK pour Java
Clients synchrones
HTTPLes clients synchrones SDK de Java implémentent l'SdkHttpClientS3Client
ou leDynamoDbClient
, nécessite l'utilisation d'un client synchrone. HTTP AWS SDK for Java Il propose trois HTTP clients synchrones.
- ApacheHttpClient (par défaut)
-
ApacheHttpClient
est le HTTP client par défaut pour les clients de service synchrones. Pour plus d'informations sur la configuration du ApacheHttpClient
, consultezConfiguration du client basé sur Apache HTTP. - AwsCrtHttpClient
-
AwsCrtHttpClient
fournit un débit élevé et des E/S non bloquantes. Il est basé sur le client HTTP AWS Common Runtime (CRT). Pour plus d'informations sur la configuration du AwsCrtHttpClient
et son utilisation avec les clients de service, consultezConfiguration de HTTP clients AWS CRT basés sur la configuration. - UrlConnectionHttpClient
-
Pour minimiser le nombre de fichiers JAR et de bibliothèques tierces utilisés par votre application, vous pouvez utiliser le UrlConnectionHttpClient
. Pour plus d'informations sur la configuration du UrlConnectionHttpClient
, consultezConfiguration du HTTP client URLConnection basé.
Clients asynchrones
HTTPLes clients asynchrones de SDK for Java implémentent l'SdkAsyncHttpClientS3AsyncClient
ou leDynamoDbAsyncClient
, nécessite l'utilisation d'un client asynchroneHTTP. AWS SDK for Java Il propose deux clients asynchronesHTTP.
- NettyNioAsyncHttpClient (par défaut)
-
NettyNioAsyncHttpClient
est le HTTP client par défaut utilisé par les clients asynchrones. Pour plus d'informations sur la configuration du NettyNioAsyncHttpClient
, consultezConfiguration du client basé sur Netty HTTP. - AwsCrtAsyncHttpClient
-
AwsCrtAsyncHttpClient
Il est basé sur le HTTP client AWS Common Runtime (CRT). Pour plus d'informations sur la configuration du AwsCrtAsyncHttpClient
, consultezConfiguration de HTTP clients AWS CRT basés sur la configuration.
HTTPrecommandations des clients
Plusieurs facteurs entrent en jeu lorsque vous choisissez une implémentation HTTP client. Utilisez les informations suivantes pour vous aider à prendre une décision.
Organigramme des recommandations
L'organigramme suivant fournit des conseils généraux pour vous aider à déterminer HTTP le client à utiliser.
HTTPcomparaison avec les clients
Le tableau suivant fournit des informations détaillées pour chaque HTTP client.
HTTPclient | Synchronisation ou asynchrone | Utilisation | Limitation/inconvénient |
---|---|---|---|
Client basé sur Apache HTTP (HTTPclient de synchronisation par défaut) |
Sync | Utilisez-le si vous préférez une faible latence à un débit élevé | Temps de démarrage plus lent que celui des autres HTTP clients |
URLConnectionHTTPclient basé | Sync | Utilisez-le si vous avez des exigences strictes en matière de limitation des dépendances avec des tiers | Ne prend pas en charge la HTTP PATCH méthode, requise par certaines opérations APIS comme Amazon APIGateway Update |
AWS CRTHTTPclient de synchronisation basé sur 1 | Sync |
• Utilisez-le si votre application s'exécute dans AWS Lambda • Utilisez-le si vous préférez un débit élevé à une faible latence • Utilisez-le si vous préférez synchroniser SDK les clients |
Les propriétés système Java suivantes ne sont pas prises en charge :
|
Client basé sur Netty HTTP (HTTPclient asynchrone par défaut) |
Asynchrone |
• Utilisez-le si votre application APIs invoque un support HTTP /2, tel que Kinesis API SubscribeToShard |
Temps de démarrage plus lent que celui des autres HTTP clients |
AWS CRTHTTPclient asynchrone basé sur 1 | Asynchrone | • Utilisez-le si votre application s'exécute dans AWS Lambda • Utilisez-le si vous préférez un débit élevé à une faible latence • Utilisez-le si vous préférez les clients asynchrones SDK |
• Ne prend pas en charge les clients du service qui ont besoin d'un support HTTP /2, tel que Les propriétés système Java suivantes ne sont pas prises en charge :
|
1 En raison de leurs avantages supplémentaires, nous vous recommandons d'utiliser les HTTP clients AWS CRT basés si possible.
Paramètres de configuration intelligents par défaut
La AWS SDK for Java 2.x (version 2.17.102 ou ultérieure) propose une fonctionnalité de configuration intelligente par défaut. Cette fonctionnalité optimise deux propriétés HTTP du client ainsi que d'autres propriétés qui n'affectent pas le HTTP client.
Les paramètres par défaut de configuration intelligente définissent des valeurs raisonnables pour les tlsNegotiationTimeoutInMillis
propriétés connectTimeoutInMillis
et en fonction de la valeur du mode par défaut que vous fournissez. Vous choisissez la valeur du mode par défaut en fonction des caractéristiques de votre application.
Pour plus d'informations sur les paramètres de configuration intelligents par défaut et sur la manière de choisir la valeur de mode par défaut la mieux adaptée à vos applications, consultez le guide de référence AWS SDKs and Tools.
Vous trouverez ci-dessous quatre méthodes pour définir le mode par défaut de votre application.
Si vous définissez le mode par défaut globalement à l'aide de la propriété système, de la variable d'environnement ou du fichier de AWS configuration, vous pouvez remplacer les paramètres lorsque vous créez un HTTP client.
Lorsque vous créez un HTTP client avec httpClientBuilder()
cette méthode, les paramètres s'appliquent uniquement à l'instance que vous créez. Vous en trouverez un exemple ici. Dans cet exemple, le HTTP client basé sur Netty remplace toutes les valeurs de mode par défaut définies globalement pour et. connectTimeoutInMillis
tlsNegotiationTimeoutInMillis