国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

配置基于 AWS CRT 的 HTTP 客戶端

這篇具有很好參考價(jià)值的文章主要介紹了配置基于 AWS CRT 的 HTTP 客戶端。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

基于 AWS CRT 的 HTTP 客戶端包括同步?AwsCrtHttpClient?和異步?AwsCrtAsyncHttpClient?;?AWS CRT 的 HTTP 客戶端具有以下 HTTP 客戶端優(yōu)勢(shì):

  • 更快的 SDK 啟動(dòng)時(shí)間

  • 更小的內(nèi)存占用空間

  • 降低的延遲時(shí)間

  • 連接運(yùn)行狀況管理

  • DNS 負(fù)載均衡

SDK 中基于 AWS CRT 的組件

本主題中介紹的基于 AWS CRT 的?HTTP?客戶端,與基于 AWS CRT 的?S3?客戶端是 SDK 中的不同組件。

同步和異步基于 AWS CRT 的 HTTP 客戶端是 SDK HTTP 客戶端接口的實(shí)現(xiàn),用于一般 HTTP 通信。它們是 SDK 中其他同步或異步 HTTP 客戶端的替代方案,提供額外優(yōu)點(diǎn)。

基于 AWS CRT 的 S3 客戶端是?S3AsyncClient?接口的實(shí)現(xiàn),用于與 Amazon S3 服務(wù)配合使用。它是基于 Java 的?S3AsyncClient?接口實(shí)現(xiàn)的替代方案,具有多種優(yōu)點(diǎn)。

盡管兩個(gè)組件都使用?AWS 通用運(yùn)行時(shí)系統(tǒng)中的庫(kù),但基于 AWS CRT 的 HTTP 客戶端不使用?aws-c-s3 庫(kù),也不支持?S3 分段上傳 API?功能。相比之下,基于 AWS CRT 的 S3 客戶端是專為支持 S3 分段上傳 API 功能而構(gòu)建的。

訪問(wèn)基于 AWS CRT 的 HTTP 客戶端

在使用基于 AWS CRT 的 HTTP 客戶端之前,請(qǐng)先將版本最低為 2.22.0 的?aws-crt-client?構(gòu)件添加到項(xiàng)目的依賴項(xiàng)中。

以下 Maven?pom.xml?顯示了使用材料清單(BOM)機(jī)制聲明的基于 AWS CRT 的 HTTP 客戶端。

 
 

<project> <properties> <aws.sdk.version>2.22.0</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>

訪問(wèn) Maven Central 存儲(chǔ)庫(kù)以獲取最新版本。

使用和配置基于 AWS CRT 的 HTTP 客戶端

您可以在生成服務(wù)客戶端的同時(shí)配置一個(gè)基于 AWS CRT 的 HTTP 客戶端,也可以將單個(gè)實(shí)例配置為在多個(gè)服務(wù)客戶端之間共享。

無(wú)論哪種方法,您都可以使用生成器為基于 AWS CRT 的 HTTP 客戶端實(shí)例配置屬性。

最佳實(shí)踐:將一個(gè)實(shí)例專用于一個(gè)服務(wù)客戶端

如果您需要配置基于 AWS CRT 的 HTTP 客戶端的實(shí)例,我們建議您與服務(wù)客戶端一同構(gòu)建,從而將實(shí)例專用。您可以通過(guò)使用服務(wù)客戶端生成器的?httpClientBuilder?方法來(lái)執(zhí)行此操作。這樣,HTTP 客戶端的生命周期就由 SDK 管理,這有助于避免在不再需要基于 AWS CRT 的 HTTP 客戶端實(shí)例卻不關(guān)閉實(shí)例時(shí)可能發(fā)生的內(nèi)存泄漏。

以下示例創(chuàng)建 S3 服務(wù)客戶端,并使用?connectionTimeout?和?maxConcurrency?值配置基于 AWS CRT 的 HTTP 客戶端。

  • Synchronous client
  • Asynchronous client

導(dǎo)入

 
 

import software.amazon.awssdk.http.crt.AwsCrtHttpClient; import software.amazon.awssdk.services.s3.S3Client; import java.time.Duration;

代碼

 
 

// Singleton: Use s3Client for all requests. S3Client s3Client = S3Client.builder() .httpClientBuilder(AwsCrtHttpClient .builder() .connectionTimeout(Duration.ofSeconds(3)) .maxConcurrency(100)) .build(); // Perform work with the s3Client. // Requests completed: Close the s3Client. s3Client.close();

替代方法:共享 實(shí)例

為了幫助降低應(yīng)用程序的資源和內(nèi)存使用量,您可以配置一個(gè)基于 AWS CRT 的 HTTP 客戶端,并在多個(gè)服務(wù)客戶端之間共享該客戶端。將共享 HTTP 連接池,從而降低資源使用量。

注意

共享基于 AWS CRT 的 HTTP 客戶端實(shí)例時(shí),必須在準(zhǔn)備好棄置實(shí)例時(shí)將其關(guān)閉。服務(wù)客戶端關(guān)閉后,SDK 不會(huì)關(guān)閉實(shí)例。

以下示例使用?connectionTimeout?和?maxConcurrency?值配置基于 AWS CRT 的 HTTP 客戶端實(shí)例。配置的實(shí)例將傳遞給每個(gè)服務(wù)客戶端的生成器的?httpClient?方法。當(dāng)不再需要服務(wù)客戶端和 HTTP 客戶端時(shí),它們將被顯式關(guān)閉。HTTP 客戶端最后關(guān)閉。

  • Synchronous client
  • Asynchronous client

導(dǎo)入

 
 

import software.amazon.awssdk.auth.credentials.EnvironmentVariableCredentialsProvider; import software.amazon.awssdk.awscore.defaultsmode.DefaultsMode; import software.amazon.awssdk.http.SdkHttpClient; import software.amazon.awssdk.http.crt.AwsCrtHttpClient; import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.dynamodb.DynamoDbClient; import software.amazon.awssdk.services.s3.S3Client; import java.time.Duration;

代碼

 
 

// Create an AwsCrtHttpClient shared instance. SdkHttpClient crtHttpClient = AwsCrtHttpClient.builder() .connectionTimeout(Duration.ofSeconds(3)) .maxConcurrency(100) .build(); // Singletons: Use the s3Client and dynamoDbClient for all requests. S3Client s3Client = S3Client.builder() .httpClient(crtHttpClient) .credentialsProvider(EnvironmentVariableCredentialsProvider.crea .defaultsMode(DefaultsMode.IN_REGION) .region(Region.US_EAST_1) .build(); DynamoDbClient dynamoDbClient = DynamoDbClient.builder() .httpClient(crtHttpClient) .credentialsProvider(EnvironmentVariableCredentialsProvider.crea .defaultsMode(DefaultsMode.IN_REGION) .region(Region.US_EAST_1) .build(); // Requests completed: Close all service clients. s3Client.close(); dynamoDbClient.close(); crtHttpClient.close(); // Explicitly close crtHttpClient.

將基于 AWS CRT 的 HTTP 客戶端設(shè)置為默認(rèn)客戶端

您可以設(shè)置 Maven 構(gòu)建文件,讓 SDK 使用基于 AWS CRT 的 HTTP 客戶端作為服務(wù)客戶端的默認(rèn) HTTP 客戶端。

為此,您可以向每個(gè)服務(wù)客戶端構(gòu)件添加一個(gè)具有默認(rèn) HTTP 客戶端依賴項(xiàng)的?exclusions?元素。

在以下?pom.xml?示例中,SDK 將基于 AWS CRT 的 HTTP 客戶端用于 S3 服務(wù)。如果您的代碼中的服務(wù)客戶端是?S3AsyncClient,則 SDK 使用?AwsCrtAsyncHttpClient。如果服務(wù)客戶端是 S3Client,則 SDK 使用?AwsCrtHttpClient。在此設(shè)置下,默認(rèn)的基于 Netty 的異步 HTTP 客戶端和默認(rèn)的基于 Apache 的同步 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>

請(qǐng)?jiān)L問(wèn) Maven Central 存儲(chǔ)庫(kù)以獲取最新的?VERSION?值。

注意

如果在一個(gè)?pom.xml?文件中聲明了多個(gè)服務(wù)客戶端,則所有服務(wù)客戶端都需要?exclusions?XML 元素。

使用 Java 系統(tǒng)屬性

要使用基于 AWS CRT 的 HTTP 客戶端作為應(yīng)用程序的默認(rèn) HTTP 客戶端,可以將 Java 系統(tǒng)屬性?software.amazon.awssdk.http.async.service.impl?的值設(shè)置為?software.amazon.awssdk.http.crt.AwsCrtSdkHttpService。

要在應(yīng)用程序啟動(dòng)期間設(shè)置,請(qǐng)運(yùn)行類似以下示例的命令。

 
 

java app.jar -Dsoftware.amazon.awssdk.http.async.service.impl=\ software.amazon.awssdk.http.crt.AwsCrtSdkHttpService

然后使用以下代碼段在應(yīng)用程序代碼中設(shè)置系統(tǒng)屬性。

 
 

System.setProperty("software.amazon.awssdk.http.async.service.impl", "software.amazon.awssdk.http.crt.AwsCrtSdkHttpService");

注意

當(dāng)您使用系統(tǒng)屬性配置基于 AWS CRT 的 HTTP 客戶端的使用時(shí),需要在?poml.xml?文件中向?aws-crt-client?構(gòu)件添加依賴項(xiàng)。

基于 AWS CRT 的 HTTP 客戶端的高級(jí)配置

您可以使用基于 AWS CRT 的 HTTP 客戶端的各種配置設(shè)置,包括連接運(yùn)行狀況配置和最大空閑時(shí)間。您可以查看適用于?AwsCrtAsyncHttpClient?的可用配置選項(xiàng)。您可以為?AwsCrtHttpClient?配置相同的選項(xiàng)。

連接運(yùn)行狀況配置

您可以使用 HTTP 客戶端生成器上的?connectionHealthConfiguration?方法為基于 AWS CRT 的 HTTP 客戶端配置連接運(yùn)行狀況配置。

以下示例創(chuàng)建了一個(gè) S3 服務(wù)客戶端,該客戶端使用基于 AWS CRT 的 HTTP 客戶端實(shí)例,配置了連接運(yùn)行狀況配置和連接最大空閑時(shí)間。

  • Synchronous client
  • Asynchronous client

導(dǎo)入

 
 

import software.amazon.awssdk.http.crt.AwsCrtHttpClient; import software.amazon.awssdk.services.s3.S3Client; import java.time.Duration;

代碼

 
 

// Singleton: Use the s3Client for all requests. S3Client s3Client = S3Client.builder() .httpClientBuilder(AwsCrtHttpClient .builder() .connectionHealthConfiguration(builder -> builder .minimumThroughputInBps(32000L) .minimumThroughputTimeout(Duration.ofSeconds(3))) .connectionMaxIdleTime(Duration.ofSeconds(5))) .build(); // Perform work with s3Client. // Requests complete: Close the service client. s3Client.close();

HTTP/2 支持

基于 AWS CRT 的 HTTP 客戶端尚不支持 HTTP/2 協(xié)議,但計(jì)劃在將來(lái)的版本中推出該支持。

在現(xiàn)階段,如果您使用的是需要 HTTP/2 支持的服務(wù)客戶端,例如?KinesisAsyncClient?或?TranscribeStreamingAsyncClient,可以考慮改用?NettyNioAsyncHttpClient。

代理配置示例

以下代碼段顯示了如何使用?ProxyConfiguration.Builder?在代碼中配置代理設(shè)置。

  • Synchronous client
  • Asynchronous client

導(dǎo)入

 
 

import software.amazon.awssdk.http.SdkHttpClient; import software.amazon.awssdk.http.crt.AwsCrtHttpClient; import software.amazon.awssdk.http.crt.ProxyConfiguration;

代碼

 
 

SdkHttpClient crtHttpClient = AwsCrtHttpClient.builder() .proxyConfiguration(ProxyConfiguration.builder() .scheme("https") .host("myproxy") .port(1234) .username("username") .password("password") .build()) .build();

以下命令行片段顯示了代理配置的等效 Java 系統(tǒng)屬性。

 
 

$ java -Dhttps.proxyHost=myproxy -Dhttps.proxyPort=1234 -Dhttps.proxyUser=username \ -Dhttps.proxyPassword=password -cp ... App

重要

要使用任何 HTTPS 代理系統(tǒng)屬性,必須在代碼中將?scheme?屬性設(shè)置為?https。如果未在代碼中設(shè)置 scheme 屬性,則架構(gòu)默認(rèn)為 HTTP,SDK 僅查找?http.*?系統(tǒng)屬性。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-832296.html

到了這里,關(guān)于配置基于 AWS CRT 的 HTTP 客戶端的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 基于Spring Boot2.0 & HTTP/2 實(shí)現(xiàn)服務(wù)器、客戶端

    基于Spring Boot2.0 & HTTP/2 實(shí)現(xiàn)服務(wù)器、客戶端

    HTTP協(xié)議由于其無(wú)狀態(tài)的特性以及超高的普及率,是當(dāng)下大部分網(wǎng)站選擇使用的應(yīng)用層協(xié)議。然而,HTTP/1.x的底層傳輸方式的幾個(gè)特性,已經(jīng)對(duì)應(yīng)用的整體性能產(chǎn)生了負(fù)面影響。特別是,HTTP/1.0在每次的TCP連接上只允許發(fā)送一次請(qǐng)求,在HTTP/1.1中增加了請(qǐng)求管線,但是這僅僅解決

    2023年04月09日
    瀏覽(83)
  • 使用Linux SDK客戶端向AWS Iot發(fā)送數(shù)據(jù)

    使用Linux SDK客戶端向AWS Iot發(fā)送數(shù)據(jù)

    參考鏈接: https://ap-southeast-1.console.aws.amazon.com/iot/home?region=ap-southeast-1#/test 此篇文章用于測(cè)試,使用Linux SDK客戶端向AWS Iot發(fā)送數(shù)據(jù),準(zhǔn)備環(huán)境如下: 1.1 客戶端操作系統(tǒng) 虛擬機(jī)一臺(tái): Red Hat Enterprise Linux release 8.7 (Ootpa)?? 1.2 域名解析 確??蛻舳丝梢越馕鯝WS iot 的終端節(jié)點(diǎn),可

    2024年01月25日
    瀏覽(109)
  • Mojo:為Web應(yīng)用程序提供了完整的框架,包括路由、模板、插件、Websocket、HTTP客戶端、HTTP服務(wù)器、配置文件管理等功能

    ????????Mojo是一種高級(jí)的、動(dòng)態(tài)的Perl Web應(yīng)用程序框架,它可以用來(lái)開發(fā)Web應(yīng)用程序,定位于速度、簡(jiǎn)單和可擴(kuò)展性。Mojo的設(shè)計(jì)理念是簡(jiǎn)潔、靈活、易用和高效,它為Web應(yīng)用程序提供了完整的框架,包括路由、模板、插件、Websocket、HTTP客戶端、HTTP服務(wù)器、配置文件管理等

    2024年02月09日
    瀏覽(86)
  • Linux下基于TCP協(xié)議的Socket套接字編程(客戶端&服務(wù)端)入門詳解

    Linux下基于TCP協(xié)議的Socket套接字編程(客戶端&服務(wù)端)入門詳解

    寫在前面: 本篇博客探討實(shí)踐環(huán)境如下: 1.操作系統(tǒng): Linux 2.版本(可以通過(guò)命令 cat /etc/os-release 查看版本信息):PRETTY_NAME=“CentOS Linux 7 (Core)” 編程語(yǔ)言:C 常常說(shuō)socket 、套接字 那么socket 到底指的是什么? socket 本質(zhì)上是一個(gè)抽象的概念,它是一組用于 網(wǎng)絡(luò)通信的 API , 提供

    2024年02月01日
    瀏覽(19)
  • http客戶端Fegin

    http客戶端Fegin

    代碼可讀性差,編程體驗(yàn)不統(tǒng)一 參數(shù)復(fù)雜URL難以維護(hù) Feign是聲明式的http客戶端(只需要將發(fā)http請(qǐng)求的信息寫出即可) ?主要基于SpringMvc的注解來(lái)聲明遠(yuǎn)程調(diào)用的信息: ?步驟: 1.引入依賴 2.添加EnableFeignClients注解 3.編寫FeignClient接口 4.使用FeigClient中定義的方法代替RestTempl

    2024年02月09日
    瀏覽(16)
  • 微服務(wù)——http客戶端Feign

    微服務(wù)——http客戶端Feign

    目錄 Restemplate方式調(diào)用存在的問(wèn)題 Feign的介紹 基于Feign遠(yuǎn)程調(diào)用 Feign自定義配置 修改日志方式一(基于配置文件) 修改日志方式二(基于java代碼) Feign的性能優(yōu)化 連接池使用方法? Feign_最佳實(shí)踐分析? ?方式一: 方式二 ?實(shí)現(xiàn)Feign最佳實(shí)踐(方式二) ?兩種解決方案 就像早期的事務(wù)

    2024年02月15日
    瀏覽(45)
  • 【libevent】http客戶端3:簡(jiǎn)單封裝

    LibEventHttp

    2024年02月15日
    瀏覽(19)
  • Http客戶端OkHttp的基本使用

    OkHttp是一個(gè)強(qiáng)大的開源HTTP客戶端,它被廣泛用于Android和Java應(yīng)用程序中。OkHttp具有簡(jiǎn)單易用的API,提供了許多高級(jí)功能,如連接池、請(qǐng)求壓縮和緩存等。 要使用OkHttp,需要在項(xiàng)目的構(gòu)建文件中添加以下依賴: 請(qǐng)將 x.x.x 替換為您希望使用的OkHttp版本號(hào)。 GET請(qǐng)求 以下是發(fā)送G

    2024年02月09日
    瀏覽(22)
  • 【六、http】go的http的客戶端重定向

    【六、http】go的http的客戶端重定向

    重定向過(guò)程 :客戶瀏覽器發(fā)送http請(qǐng)求----》web服務(wù)器接受后發(fā)送302狀態(tài)碼響應(yīng)及對(duì)應(yīng)新的location給客戶瀏覽器–》客戶瀏覽器發(fā)現(xiàn)是302響應(yīng),則自動(dòng)再發(fā)送一個(gè)新的http請(qǐng)求,請(qǐng)求url是新的location地址----》服務(wù)器根據(jù)此請(qǐng)求尋找資源并發(fā)送給客戶。在這里location可以重定向到任

    2024年02月05日
    瀏覽(21)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包