我正在使用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存储桶,但问题是线程在后台运行并且在完成后不会结束。
上传完成后如何让我的程序成功退出。
答案 0 :(得分:1)
AWS TransferManager通过同时上传单个文件的多个部分,使用多个线程来加快上传速度。要释放管理器正在使用的资源,您应该使用:
xferMgr.shutdownNow()
上传完成后。