Skip to content

Commit aa42737

Browse files
committed
added the configuration for max connections to S3
1 parent 2c9dd38 commit aa42737

File tree

3 files changed

+47
-11
lines changed

3 files changed

+47
-11
lines changed

micro-s3/src/main/java/com/aol/micro/server/s3/S3Configuration.java

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package com.aol.micro.server.s3;
22

33
import lombok.Getter;
4-
54
import org.springframework.beans.factory.annotation.Autowired;
65
import org.springframework.beans.factory.annotation.Value;
76
import org.springframework.stereotype.Component;
@@ -16,17 +15,22 @@ public class S3Configuration {
1615
private final String region;
1716
private final int uploadThreads;
1817
private final String uploadThreadNamePrefix;
18+
private final int maxConnections;
1919

2020
@Autowired
21-
public S3Configuration(@Value("${s3.accessKey}") String accessKey, @Value("${s3.secretKey}") String secretKey,
22-
@Value("${s3.sessionToken:#{null}}") String sessionToken, @Value("${s3.region:#{null}}") String region,
23-
@Value("${s3.upload.threads:5}") int uploadThreads,
24-
@Value("${s3.upload.thread.name.prefix:s3-transfer-manager-worker-}") String uploadThreadNamePrefix) {
21+
public S3Configuration(@Value("${s3.accessKey}") String accessKey,
22+
@Value("${s3.secretKey}") String secretKey,
23+
@Value("${s3.sessionToken:#{null}}") String sessionToken,
24+
@Value("${s3.region:#{null}}") String region,
25+
@Value("${s3.upload.threads:5}") int uploadThreads,
26+
@Value("${s3.upload.thread.name.prefix:s3-transfer-manager-worker-}") String uploadThreadNamePrefix,
27+
@Value("${s3.client.maxConnections:100}") int maxConnections) {
2528
this.accessKey = accessKey;
2629
this.secretKey = secretKey;
2730
this.sessionToken = sessionToken;
2831
this.region = region;
2932
this.uploadThreads = uploadThreads;
3033
this.uploadThreadNamePrefix = uploadThreadNamePrefix;
34+
this.maxConnections = maxConnections;
3135
}
3236
}

micro-s3/src/main/java/com/aol/micro/server/s3/plugin/S3ClientProvider.java

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
package com.aol.micro.server.s3.plugin;
22

3+
import com.amazonaws.ClientConfiguration;
34
import org.springframework.beans.factory.annotation.Autowired;
45
import org.springframework.context.annotation.Bean;
6+
import org.springframework.context.annotation.ComponentScan;
57
import org.springframework.context.annotation.Configuration;
68

79
import com.amazonaws.auth.AWSCredentials;
@@ -13,6 +15,7 @@
1315
import com.aol.micro.server.s3.S3Configuration;
1416

1517
@Configuration
18+
@ComponentScan(basePackages = {"com.aol.micro.server.s3"})
1619
public class S3ClientProvider {
1720

1821
@Autowired
@@ -24,16 +27,13 @@ public AmazonS3Client getClient() {
2427
AWSCredentials credentials;
2528

2629
if (s3Configuration.getSessionToken() == null) {
27-
credentials = new BasicAWSCredentials(
28-
s3Configuration.getAccessKey(), s3Configuration.getSecretKey());
30+
credentials = new BasicAWSCredentials(s3Configuration.getAccessKey(), s3Configuration.getSecretKey());
2931
} else {
30-
credentials = new BasicSessionCredentials(
31-
s3Configuration.getAccessKey(), s3Configuration.getSecretKey(),
32+
credentials = new BasicSessionCredentials(s3Configuration.getAccessKey(), s3Configuration.getSecretKey(),
3233
s3Configuration.getSessionToken());
3334
}
3435

35-
AmazonS3Client amazonS3Client = new AmazonS3Client(
36-
credentials);
36+
AmazonS3Client amazonS3Client = new AmazonS3Client(credentials, getClientConfiguration());
3737

3838
if (s3Configuration.getRegion() != null) {
3939
Region region = Region.getRegion(Regions.fromName(s3Configuration.getRegion()));
@@ -42,4 +42,8 @@ public AmazonS3Client getClient() {
4242

4343
return amazonS3Client;
4444
}
45+
46+
private ClientConfiguration getClientConfiguration() {
47+
return new ClientConfiguration().withMaxConnections(s3Configuration.getMaxConnections());
48+
}
4549
}
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package com.aol.micro.server.s3.plugin;
2+
3+
import com.amazonaws.services.s3.AmazonS3Client;
4+
import lombok.SneakyThrows;
5+
import org.junit.Test;
6+
import org.junit.runner.RunWith;
7+
import org.springframework.beans.factory.annotation.Autowired;
8+
import org.springframework.context.ApplicationContext;
9+
import org.springframework.test.context.ContextConfiguration;
10+
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
11+
import org.springframework.test.context.support.AnnotationConfigContextLoader;
12+
13+
import static org.junit.Assert.assertNotNull;
14+
15+
@RunWith(SpringJUnit4ClassRunner.class)
16+
@ContextConfiguration(classes=S3ClientProvider.class, loader = AnnotationConfigContextLoader.class)
17+
public class S3ClientProviderTest {
18+
19+
@Autowired
20+
ApplicationContext ctx;
21+
22+
@Test
23+
@SneakyThrows
24+
public void getClient() {
25+
AmazonS3Client client = ctx.getBean(AmazonS3Client.class);
26+
assertNotNull(client);
27+
}
28+
}

0 commit comments

Comments
 (0)