S3 から csv テキスト ファイルを読み取り、その各行を分散キューに送信して処理しようとしています。
それを読み取ろうとすると、読み取られているファイルのさまざまな時点で (さまざまな実行で) "java.net.SocketException: Socket is closed" Exception が発生します。これはコードです:
AmazonS3 s3 = new AmazonS3Client(new PropertiesCredentials(MyClass.class.getResourceAsStream("myCredentials.properties")));
String bucketName = "myBucket";
String key = "myFile";
S3Object object = s3.getObject(new GetObjectRequest(bucketName, key));
InputStream in = object.getObjectContent();
BufferedReader readerS3 = new BufferedReader(new InputStreamReader(in, Charset.forName(fileInfo.getEncoding())));
try {
String line = null;
while ((line = readerS3.readLine()) != null) {
// Sending the line to a distributed queue
}
} catch (IOException e) {
e.printStackTrace();
}finally {
try {
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
この問題を解決する方法について何か考えはありますか?
アップデート:
この例外は、メソッドを 2 回目に実行したときに発生します。プログラム全体を停止して再度実行すると、最初にメソッドを実行すると問題なく動作します。