S3 Java 客户端因“内容长度分隔消息正文过早结束”或“java.net.SocketException Socket 已关闭”而失败很多
我有一个应用程序,可以在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);
}
}
这个输出流是一个新的 BufferedOutputStream( new FileOutputStream( file ) )。我正在使用最新版本的 Amazon S3 Java 客户端,此调用在放弃之前重试了四次。因此,在尝试了4次之后,它仍然失败了。
任何关于如何改善这一点的提示或技巧都值得赞赏。