AWS S3 TransferManager在完成对象传输后不退出

时间:2018-06-19 02:18:53

标签: java scala amazon-web-services amazon-s3

我正在使用AWS TransferManager使用Scala编程在S3存储桶上传我的对象。

我的代码类似于:

val xferMgr:TransferManager = TransferManagerBuilder.standard().withS3Client(awsClient).build();

val putObjectRequest:PutObjectRequest = new PutObjectRequest(bucketName, key + fileToUpload.getName, fileToUpload);

val upload:Upload = xferMgr.upload(putObjectRequest);

val uploadResult:UploadResult = upload.waitForUploadResult();

if (uploadResult != null) {
    val uploadedS3Filename:String = uploadResult.getKey();
    println("File uploaded with key: " + uploadedS3Filename);
}

此代码确实将对象上传到S3存储桶,但问题是线程在后台运行并且在完成后不会结束。

上传完成后如何让我的程序成功退出。

1 个答案:

答案 0 :(得分:1)

AWS TransferManager通过同时上传单个文件的多个部分,使用多个线程来加快上传速度。要释放管理器正在使用的资源,您应该使用:

xferMgr.shutdownNow()
上传完成后