相关疑难解决方法(0)

Amazon .NET AWS SDK的AmazonS3线程安全吗?

Amazon .NET AWS SDK的AmazonS3线程是安全的还是我应该AmazonS3在多线程系统中为每个请求创建一个新实例?

专门针对最新的.NET AWS SDK(版本1.3.14).

.net c# amazon-s3 amazon-web-services

23
推荐指数
1
解决办法
3587
查看次数

Amazon S3是否有连接池?

我曾经使用过代码

public static AmazonS3Client s3 = null;
...
BasicAWSCredentials c = new BasicAWSCredentials("absadgwslkjlsdjgflwa");
s3 =  new AmazonS3Client(c);
Run Code Online (Sandbox Code Playgroud)

只有一个实例s3被创建,而数十个线程将通过s3.putObject()上传图像.在转储信息中,我可以看到一个线程将锁定唯一的实例s3而其他人正在等待.

所以我想如果我使用下面的代码可能会更快:

BasicAWSCredentials c = new BasicAWSCredentials("absadgwslkjlsdjgflwa");
for(int i = 0; i < 10; i++)
    amazonS3[i] = new AmazonS3Client(c);
Run Code Online (Sandbox Code Playgroud)

每次系统将获得随机的s3实例,然后上传图像.

private static AmazonS3 getS3(){
    int i = (int)(Math.random() * 10); 
    return amazonS3[i];
}
Run Code Online (Sandbox Code Playgroud)

但似乎系统变慢了.为什么会这样?也许唯一的实例s3已经使用了连接池?我很迷惑.

java amazon-s3 amazon-web-services

18
推荐指数
1
解决办法
2万
查看次数

AmazonS3连接管理

在使用AWS时,是否有推荐的方法来管理与AmazonS3的连接?

典型的Amazon S3代码(取自亚马逊官方样本)通常看起来像这样?

AmazonS3 s3 = new AmazonS3Client(...);
...
s3.putObject(new PutObjectRequest(bucketName, project.getName() + "/" + imageFile.getName(), imageFile));
Run Code Online (Sandbox Code Playgroud)

以下是问题:

  • 这是一个好主意维护代码中每个人使用的单个AmazonS3Client,还是最好在每次调用时创建一个?

  • 例如,在使用MySQL时是否存在连接池的概念?

  • 像断开连接(MySQL类比:MySQL重启)这样的问题是否相关,以致AmazonS3Client变得无效并需要重新创建?如果是这样,处理断开连接的正确方法是什么?

  • 有谁知道spring与spring集成提供的功能:https://github.com/spring-projects/spring-integration-extensions/tree/master/spring-integration-aws

谢谢.

spring amazon-s3 amazon-web-services

16
推荐指数
2
解决办法
5491
查看次数

我应该创建多少个 HttpClient?

最初我的代码在每个请求的 using 语句中创建了一个新的 HttpClient 。然后我阅读了几篇关于重用 HttpClient 来提高性能的文章。

这是一篇这样的文章的摘录:

我不建议在 Using 块内创建 HttpClient 来发出单个请求。当 HttpClient 被释放时,它也会导致底层连接也被关闭。这意味着下一个请求必须重新打开该连接。您应该尝试重新使用您的 HttpClient 实例。

http://www.bizcoder.com/httpclient-it-lives-and-it-is-glorious

在我看来,只有当多个请求连续发送到同一个地方时,保持连接打开才有用 - 例如 www.api1.com。

我的问题是,我应该如何创建 HttpClients?

我的网站在后端讨论了大约十种不同的服务。

我应该创建一个 HttpClient 供所有人使用,还是应该为后端使用的每个域创建一个单独的 HttpClient?

示例:如果我与 www.api1.com 和 www.api2.com 交谈,我应该创建 2 个不同的 HttpClient,还是只创建一个 HttpClient?

c# dotnet-httpclient

6
推荐指数
1
解决办法
2797
查看次数