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.
Configurar HTTP clientes AWS CRT basados
Los HTTP clientes AWS CRT basados incluyen los clientes síncronos AwsCrtHttpClient
-
Tiempo de SDK inicio más rápido
-
Ocupación de menos espacio de memoria
-
Tiempo de latencia reducido
-
Administración del estado de conexión
-
DNSequilibrio de carga
AWS CRTcomponentes basados en el SDK
Los HTTPclientes AWS CRT basados, que se describen en este tema, y el cliente S3 AWS CRT basado son componentes diferentes delSDK.
Los HTTPclientes síncronos y asíncronos son interfaces AWS CRT de SDK HTTP cliente de implementaciones y se utilizan para la comunicación general. HTTP Son alternativas a los otros clientes síncronos o HTTP asíncronos con beneficios adicionales. SDK
El cliente S3 AWS CRT basado es una implementación de la AsyncClient interfaz S3S3AsyncClient
basada en Java y ofrece varias ventajas.
Si bien ambos componentes utilizan bibliotecas del AWS Common Runtime, los HTTP clientes AWS CRT basados no utilizan la biblioteca aws-c-s 3
Acceda a los clientes basados AWS CRT HTTP
Antes de poder usar los HTTP clientes AWS CRT basados, agrega el aws-crt-client
artefacto con una versión mínima de 2.22.0 a las dependencias de tu proyecto.
La siguiente tabla Maven pom.xml
muestra los HTTP clientes AWS CRT basados declarados mediante el mecanismo de lista de materiales (). BOM
<project> <properties> <aws.sdk.version>
2.27.21
</aws.sdk.version> </properties> <dependencyManagement> <dependencies> <dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>bom</artifactId> <version>${aws.sdk.version}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <dependencies> <dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>aws-crt-client</artifactId> </dependency> </dependencies> </project>
Visite el repositorio central de Maven para ver la versión más reciente
Utilice y configure un cliente AWS CRT basado HTTP
Puede configurar un HTTP cliente AWS CRT basado junto con la creación de un cliente de servicio, o puede configurar una sola instancia para compartirla entre varios clientes de servicio.
Con cualquiera de estos enfoques, se utiliza un generador para configurar las propiedades
Práctica recomendada: dedicar una instancia de a un cliente de servicio
Si necesita configurar una instancia de un HTTP cliente AWS CRT basado, le recomendamos que dedique la instancia y la cree junto con el cliente de servicio. Puede hacerlo con el método httpClientBuilder
del generador del cliente del servicio. De esta forma, el ciclo de vida del HTTP cliente lo gestiona el clienteSDK, lo que ayuda a evitar posibles pérdidas de memoria si la instancia de HTTP cliente AWS CRT basada no se cierra cuando ya no es necesaria.
En el siguiente ejemplo, se crea un cliente de servicio S3 y se configura un HTTP cliente AWS CRT basado con maxConcurrency
valores connectionTimeout
y.
Enfoque alternativo: compartir una instancia
Para reducir el uso de recursos y memoria para su aplicación, puede configurar un HTTP cliente AWS CRT basado y compartirlo entre varios clientes de servicio. El grupo de HTTP conexiones se compartirá, lo que reduce el uso de recursos.
nota
Cuando se comparte una instancia de HTTP cliente AWS CRT basada, debe cerrarla cuando esté lista para ser eliminada. No SDK cerrará la instancia cuando el cliente del servicio esté cerrado.
En el siguiente ejemplo, se configura una instancia de HTTP cliente AWS CRT basada con maxConcurrency
valores connectionTimeout
y. La instancia configurada se pasa al método httpClient
del creador de cada cliente de servicio. Cuando los clientes del servicio y el HTTP cliente ya no son necesarios, se cierran de forma explícita. El HTTP cliente es el último en cerrar.
Establezca un HTTP cliente AWS CRT basado como predeterminado
Puede configurar su archivo de compilación de Maven para que SDK utilice un HTTP cliente AWS CRT basado como HTTP cliente predeterminado para los clientes de servicio.
Para ello, añada un exclusions
elemento con las dependencias de HTTP cliente predeterminadas a cada artefacto del cliente de servicio.
En el siguiente pom.xml
ejemplo, SDK utiliza un HTTP cliente AWS CRT basado para los servicios de S3. Si el cliente de servicio de su código es unS3AsyncClient
, SDK utilizaAwsCrtAsyncHttpClient
. Si el cliente de servicio es un S3Client, utiliza. SDK AwsCrtHttpClient
Con esta configuración, el cliente asíncrono predeterminado basado en Netty y el HTTP cliente síncrono predeterminado basado en Apache no están disponibles. HTTP
<project> <properties> <aws.sdk.version>
VERSION
</aws.sdk.version> </properties> <dependencies> <dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>s3</artifactId> <version>${aws.sdk.version}</version> <exclusions> <exclusion> <groupId>software.amazon.awssdk</groupId> <artifactId>netty-nio-client</artifactId> </exclusion> <exclusion> <groupId>software.amazon.awssdk</groupId> <artifactId>apache-client</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>aws-crt-client</artifactId> </dependency> </dependencies> </project>
Visite el repositorio central de Maven para obtener las últimas VERSION
Valor
nota
Si se declaran varios clientes de servicio en un pom.xml
archivo, todos requieren el exclusions
XML elemento.
Utilizar una propiedad del sistema Java
Para usar los HTTP clientes AWS CRT basados como predeterminados HTTP para su aplicación, puede establecer la propiedad software.amazon.awssdk.http.async.service.impl
del sistema Java en un valor desoftware.amazon.awssdk.http.crt.AwsCrtSdkHttpService
.
Para configurarlo durante el inicio de la aplicación, ejecute un comando similar al siguiente.
java app.jar -Dsoftware.amazon.awssdk.http.async.service.impl=\ software.amazon.awssdk.http.crt.AwsCrtSdkHttpService
Use el siguiente fragmento de código para establecer la propiedad del sistema en el código de la aplicación.
System.setProperty("software.amazon.awssdk.http.async.service.impl", "software.amazon.awssdk.http.crt.AwsCrtSdkHttpService");
nota
Debe añadir una dependencia al aws-crt-client
artefacto del poml.xml
archivo cuando utilice una propiedad del sistema para configurar el uso de los HTTP clientes AWS CRT basados.
Configuración avanzada de clientes AWS CRT basados HTTP
Puede utilizar varios ajustes de configuración de los HTTP clientes AWS CRT basados, incluida la configuración del estado de la conexión y el tiempo máximo de inactividad. Puede revisar las opciones de configuración disponiblesAwsCrtAsyncHttpClient
. Puede configurar las mismas opciones para AwsCrtHttpClient
.
Configuración del estado de conexión
Puede configurar el estado de la conexión para los HTTP clientes AWS CRT basados mediante el connectionHealthConfiguration
método del generador de HTTP clientes.
En el siguiente ejemplo, se crea un cliente de servicio S3 que utiliza una instancia de HTTP cliente AWS CRT basada en una configuración de mantenimiento de la conexión y un tiempo máximo de inactividad para las conexiones.
HTTPCompatibilidad con /2
El protocolo HTTP /2 aún no es compatible con los HTTP clientes AWS CRT basados, pero está previsto que se publique en un futuro.
Mientras tanto, si utiliza clientes de servicio que requieren compatibilidad con HTTP /2, como el KinesisAsyncClient
Ejemplo de configuración proxy
El siguiente fragmento de código muestra el uso de ProxyConfiguration.Builder
Las propiedades del sistema Java equivalentes para la configuración del proxy se muestran en el siguiente fragmento de línea de comandos.
$ java -Dhttps.proxyHost=myproxy -Dhttps.proxyPort=1234 -Dhttps.proxyUser=username \ -Dhttps.proxyPassword=password -Dhttp.nonProxyHosts=localhost|host.example.com -cp ... App
importante
Para utilizar cualquiera de las propiedades del sistema HTTPS proxy, la scheme
propiedad debe estar configurada en código parahttps
. Si la propiedad del esquema no está configurada en el código, el esquema se establece de forma predeterminada HTTP y solo SDK busca las propiedades http.*
del sistema.
La configuración equivalente que usa variables de entorno es:
// Set the following environment variables. // $ export HTTPS_PROXY="https://username:password@myproxy:1234" // $ export NO_PROXY="localhost|host.example.com" // Set the 'useSystemPropertyValues' to false on the proxy configuration. SdkAsyncHttpClient crtAsyncHttpClient = AwsCrtAsyncHttpClient.builder() .proxyConfiguration(ProxyConfiguration.builder() .scheme("https") .useSystemPropertyValues(Boolean.FALSE) .build()) .build(); // Run the application. // $ java -cp ... App