update 优化 将crt客户端替换为Netty客户端 节约17M打包大小

dev
疯狂的狮子Li 9 months ago
parent 2b3897c302
commit aa7c79885a

@ -49,7 +49,6 @@
<!-- OSS 配置 --> <!-- OSS 配置 -->
<aws.sdk.version>2.28.22</aws.sdk.version> <aws.sdk.version>2.28.22</aws.sdk.version>
<aws.crt.version>0.31.3</aws.crt.version>
<!-- SMS 配置 --> <!-- SMS 配置 -->
<sms4j.version>3.3.3</sms4j.version> <sms4j.version>3.3.3</sms4j.version>
@ -305,18 +304,18 @@
<artifactId>s3</artifactId> <artifactId>s3</artifactId>
<version>${aws.sdk.version}</version> <version>${aws.sdk.version}</version>
</dependency> </dependency>
<!-- 使用AWS基于 CRT 的 S3 客户端 -->
<dependency>
<groupId>software.amazon.awssdk.crt</groupId>
<artifactId>aws-crt</artifactId>
<version>${aws.crt.version}</version>
</dependency>
<!-- 基于 AWS CRT 的 S3 客户端的性能增强的 S3 传输管理器 --> <!-- 基于 AWS CRT 的 S3 客户端的性能增强的 S3 传输管理器 -->
<dependency> <dependency>
<groupId>software.amazon.awssdk</groupId> <groupId>software.amazon.awssdk</groupId>
<artifactId>s3-transfer-manager</artifactId> <artifactId>s3-transfer-manager</artifactId>
<version>${aws.sdk.version}</version> <version>${aws.sdk.version}</version>
</dependency> </dependency>
<!-- 将基于 Netty 的 HTTP 客户端从类路径中移除 -->
<dependency>
<groupId>software.amazon.awssdk</groupId>
<artifactId>netty-nio-client</artifactId>
<version>${aws.sdk.version}</version>
</dependency>
<!--短信sms4j--> <!--短信sms4j-->
<dependency> <dependency>

@ -54,10 +54,10 @@
</exclusions> </exclusions>
</dependency> </dependency>
<!-- 使用AWS基于 CRT 的 S3 客户端 --> <!-- 将基于 Netty 的 HTTP 客户端从类路径中移除 -->
<dependency> <dependency>
<groupId>software.amazon.awssdk.crt</groupId> <groupId>software.amazon.awssdk</groupId>
<artifactId>aws-crt</artifactId> <artifactId>netty-nio-client</artifactId>
</dependency> </dependency>
<!-- 基于 AWS CRT 的 S3 客户端的性能增强的 S3 传输管理器 --> <!-- 基于 AWS CRT 的 S3 客户端的性能增强的 S3 传输管理器 -->

@ -16,10 +16,10 @@ import software.amazon.awssdk.auth.credentials.StaticCredentialsProvider;
import software.amazon.awssdk.core.ResponseInputStream; import software.amazon.awssdk.core.ResponseInputStream;
import software.amazon.awssdk.core.async.AsyncResponseTransformer; import software.amazon.awssdk.core.async.AsyncResponseTransformer;
import software.amazon.awssdk.core.async.BlockingInputStreamAsyncRequestBody; import software.amazon.awssdk.core.async.BlockingInputStreamAsyncRequestBody;
import software.amazon.awssdk.http.nio.netty.NettyNioAsyncHttpClient;
import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.s3.S3AsyncClient; import software.amazon.awssdk.services.s3.S3AsyncClient;
import software.amazon.awssdk.services.s3.S3Configuration; import software.amazon.awssdk.services.s3.S3Configuration;
import software.amazon.awssdk.services.s3.crt.S3CrtHttpConfiguration;
import software.amazon.awssdk.services.s3.model.GetObjectResponse; import software.amazon.awssdk.services.s3.model.GetObjectResponse;
import software.amazon.awssdk.services.s3.presigner.S3Presigner; import software.amazon.awssdk.services.s3.presigner.S3Presigner;
import software.amazon.awssdk.transfer.s3.S3TransferManager; import software.amazon.awssdk.transfer.s3.S3TransferManager;
@ -84,18 +84,14 @@ public class OssClient {
// MinIO 使用 HTTPS 限制使用域名访问,站点填域名。需要启用路径样式访问 // MinIO 使用 HTTPS 限制使用域名访问,站点填域名。需要启用路径样式访问
boolean isStyle = !StringUtils.containsAny(properties.getEndpoint(), OssConstant.CLOUD_SERVICE); boolean isStyle = !StringUtils.containsAny(properties.getEndpoint(), OssConstant.CLOUD_SERVICE);
// 创建AWS基于 CRT 的 S3 客户端 // 创建AWS基于 Netty 的 S3 客户端
this.client = S3AsyncClient.crtBuilder() this.client = S3AsyncClient.builder()
.credentialsProvider(credentialsProvider) .credentialsProvider(credentialsProvider)
.endpointOverride(URI.create(getEndpoint())) .endpointOverride(URI.create(getEndpoint()))
.region(of()) .region(of())
.targetThroughputInGbps(20.0)
.minimumPartSizeInBytes(10 * 1025 * 1024L)
.checksumValidationEnabled(false)
.forcePathStyle(isStyle) .forcePathStyle(isStyle)
.httpConfiguration(S3CrtHttpConfiguration.builder() .httpClient(NettyNioAsyncHttpClient.builder()
.connectionTimeout(Duration.ofSeconds(60)) // 设置连接超时 .connectionTimeout(Duration.ofSeconds(60)).build())
.build())
.build(); .build();
//AWS基于 CRT 的 S3 AsyncClient 实例用作 S3 传输管理器的底层客户端 //AWS基于 CRT 的 S3 AsyncClient 实例用作 S3 传输管理器的底层客户端

Loading…
Cancel
Save