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à.
Configurare i client HTTP nel AWS SDK for Java 2.x
È possibile modificare il client HTTP da utilizzare per il client di servizio e modificare la configurazione predefinita per i client HTTP con AWS SDK for Java 2.x. Questa sezione illustra i client HTTP e le impostazioni per l'SDK.
Client HTTP disponibili nell'SDK per Java
Client sincroni
I client HTTP sincroni nell'SDK per Java implementano l'interfaccia. SdkHttpClient S3Client o theDynamoDbClient, richiede l'uso di un client HTTP sincrono. AWS SDK per Java Offre tre client HTTP sincroni.
- Apache5HttpClient (impostazione predefinita)
-
Apache5HttpClient
è una versione aggiornata di ApacheHttpClientApache HttpClient 5.x. La versione 5.x è la versione gestita attivamente da Apache e migliora la versione precedente utilizzataApacheHttpClientda apportando la moderna compatibilità dell'ecosistema Java, incluso il supporto dei thread virtuali per Java 21 e una maggiore flessibilità di registrazione tramite SLF4J.Apache5HttpClientsostituitoApacheHttpClientcome client sincrono predefinito nella versione2.46.0dell'SDK per Java 2.x. AWS Ha un'API e funzionalità identiche, che lo rendono ideale come sostituto immediato. Per informazioni sulla configurazione di, vedere.Apache5HttpClientConfigurare il client HTTP basato su Apache 5.x - ApacheHttpClient
-
Nota
ApacheHttpClientè obsoleto perché Apache HttpClient 4.x è in modalità di manutenzione. Usa la versione basata su Apache 5.x. HttpClient Apache5HttpClientApacheHttpClient
è basato su Apache 4.x. HttpClient Per informazioni sulla configurazione di, vedere. ApacheHttpClientConfigurare il client Apache-based HTTP - AwsCrtHttpClient
-
AwsCrtHttpClient
fornisce un throughput elevato e un IO non bloccante. È basato sul client Http AWS Common Runtime (CRT). Per informazioni sulla configurazione AwsCrtHttpCliente sull'utilizzo con i client di servizio, vedere. Configurazione AWS dei client HTTP basati su CRT - UrlConnectionHttpClient
-
Per ridurre al minimo il numero di jar e librerie di terze parti utilizzate dall'applicazione, è possibile utilizzare. UrlConnectionHttpClient
Per informazioni sulla configurazione di UrlConnectionHttpClient, vedere. Configurare il client HTTP URLConnection basato
Client asincroni
I client HTTP asincroni nell'SDK per Java implementano l'interfaccia. SdkAsyncHttpClient S3AsyncClient o the, richiede l'uso di un client HTTP DynamoDbAsyncClient asincrono. Offre AWS SDK per Java due client HTTP asincroni.
- NettyNioAsyncHttpClient (impostazione predefinita)
-
NettyNioAsyncHttpClient
è il client HTTP predefinito utilizzato dai client asincroni. Per informazioni sulla configurazione di, vedere. NettyNioAsyncHttpClientConfigurazione del client HTTP basato su Netty - AwsCrtAsyncHttpClient
-
AwsCrtAsyncHttpClient
Si basa sul client HTTP AWS Common Runtime (CRT). Per informazioni sulla configurazione di AwsCrtAsyncHttpClient, vedere. Configurazione AWS dei client HTTP basati su CRT
Consigli per i client HTTP
Quando si sceglie un'implementazione del client HTTP entrano in gioco diversi fattori. Utilizzate le seguenti informazioni per aiutarvi a decidere.
Confronto tra client HTTP
La tabella seguente fornisce informazioni dettagliate per ogni client HTTP.
| Client HTTP | Sincronizzazione o asincrono | Quando utilizzarlo | Limitation/drawback |
|---|---|---|---|
| Client HTTP basato su Apache 5.x (client HTTP di sincronizzazione predefinito) |
Sync | Usalo se preferisci una latenza bassa rispetto a un throughput elevato | Tempo di avvio più lento rispetto ad altri client HTTP |
| URLConnection-based Client HTTP | Sync | Usalo se hai un requisito rigido per limitare le dipendenze di terze parti |
• Non supporta il metodo HTTP PATCH, richiesto da alcune API come le operazioni di Amazon APIGateway Update • Non supporta un timeout di connessione inattiva configurabile. Per ulteriori informazioni, vedere Configurare il client URLConnection-based HTTP. |
| AWS CRT-based sincronizzare il client HTTP 1 | Sync |
• Usalo se l'applicazione è in esecuzione AWS Lambda • Usalo se preferisci un throughput elevato rispetto a una bassa latenza • Usalo se preferisci i client SDK di sincronizzazione |
Le seguenti proprietà del sistema Java non sono supportate:
|
| Netty-based Client HTTP (client HTTP asincrono predefinito) |
Asincrono |
• Usalo se l'applicazione si basa sulle proprietà del sistema Java per la configurazione TLS (ad esempio) |
Tempo di avvio più lento rispetto ad altri client HTTP |
| AWS CRT-based client HTTP asincrono 1 | Asincrono | • Usalo se l'applicazione è in esecuzione AWS Lambda • Usalo se preferisci un throughput elevato rispetto a una bassa latenza • Usalo se preferisci i client SDK asincroni |
Le seguenti proprietà del sistema Java non sono supportate:
|
1 A causa dei loro vantaggi aggiuntivi, ti consigliamo di utilizzare i client HTTP, se possibile. AWS CRT-based
Impostazioni predefinite di configurazione intelligenti
La AWS SDK for Java 2.x (versione 2.17.102 o successiva) offre una funzionalità di configurazione intelligente per le impostazioni predefinite. Questa funzionalità ottimizza due proprietà del client HTTP insieme ad altre proprietà che non influiscono sul client HTTP.
Le impostazioni predefinite di configurazione intelligente impostano valori ragionevoli per le tlsNegotiationTimeoutInMillis proprietà connectTimeoutInMillis e in base al valore della modalità predefinita fornito dall'utente. Scegliete il valore della modalità predefinita in base alle caratteristiche dell'applicazione.
Per ulteriori informazioni sulle impostazioni predefinite di configurazione intelligente e su come scegliere il valore della modalità predefinita più adatto alle applicazioni, consulta la Guida di riferimento per SDK e strumenti. AWS
Di seguito sono riportati quattro modi per impostare la modalità predefinita per l'applicazione.
Se imposti la modalità predefinita a livello globale con la proprietà di sistema, la variabile di ambiente o il file di AWS configurazione, puoi sovrascrivere le impostazioni quando crei un client HTTP.
Quando si crea un client HTTP con il httpClientBuilder() metodo, le impostazioni si applicano solo all'istanza che si sta creando. Un esempio di ciò è mostrato qui. Il client Netty-based HTTP in questo esempio sovrascrive qualsiasi valore di modalità predefinito impostato globalmente per connectTimeoutInMillis e. tlsNegotiationTimeoutInMillis