【发布时间】:2012-04-14 17:16:04
【问题描述】:
我有一个在 S3 上做了很多工作的应用程序,主要是从它下载文件。我看到很多此类错误,我想知道这是否是我的代码中的问题,或者该服务是否真的像这样不可靠。
我用来从 S3 对象流中读取的代码如下:
public static final void write(InputStream stream, OutputStream output) {
byte[] buffer = new byte[1024];
int read = -1;
try {
while ((read = stream.read(buffer)) != -1) {
output.write(buffer, 0, read);
}
stream.close();
output.flush();
output.close();
} catch (IOException e) {
throw new RuntimeException(e);
}
}
这个OutputStream是一个new BufferedOutputStream(new FileOutputStream(file))。我正在使用最新版本的 Amazon S3 Java 客户端,此调用在放弃前被重试 四次。所以,在尝试了 4 次之后,它仍然失败。
感谢任何关于我如何改进这一点的提示或技巧。
【问题讨论】:
-
是所有(或大部分)文件、随机文件还是有限且可重现的文件集都会发生这种情况?您是否在第一次上传之前设置了任何元数据?我见过某些文件上的元数据(或缺少元数据)可能会导致一些奇怪问题的情况。如果您还没有尝试过,可能值得一试。
-
大部分是随机文件,我们不使用任何元数据:(
-
只是猜测。您确定这些随机文件在 s3 正确上传了吗?尝试通过 GET 请求或其他工具下载这些文件。
-
最终它可以工作,这是我的主要问题,我必须重试多次才能做到。
标签: java sockets amazon-s3 connection amazon-web-services