如何解决PrematureCloseException:连接在响应期间过早关闭 当使用 azure blob 下载时
我尝试通过以下代码行从 azure blob 存储下载大文件:
BlobClient blobAsyncclient = new BlobServiceClientBuilder().connectionString(connectionString1)
.buildClient()
.getBlobContainerClient(blob)
.getBlobClient(client);
blobAsyncclient.downloadToFile(path);
我得到了这个例外:
reactor.core.Exceptions$ReactiveException: reactor.netty.http.client.HttpClientOperations$PrematureCloseException: Connection prematurely closed DURING response
at reactor.core.Exceptions.propagate(Exceptions.java:326)
at reactor.core.publisher.BlockingSingleSubscriber.blockingGet(BlockingSingleSubscriber.java:91)
at reactor.core.publisher.Mono.block(Mono.java:1500)
at com.azure.storage.common.implementation.StorageImplUtils.blockWithOptionalTimeout(StorageImplUtils.java:99)
at com.azure.storage.blob.specialized.BlobClientBase.downloadToFileWithResponse(BlobClientBase.java:557)
at com.gooddata.cloudresource.service.connection.BlobStorageDataSourceService.validateConnection(BlobStorageDataSourceService.java:89)
at com.gooddata.cloudresource.model.worker.CloudConnectionValidationWorker.lambda$doProcesstask$1(CloudConnectionValidationWorker.java:55)
at java.util.Optional.ifPresent(Optional.java:159)
at com.gooddata.cloudresource.model.worker.CloudConnectionValidationWorker.doProcesstask(CloudConnectionValidationWorker.java:55)
at com.gooddata.cloudresource.model.worker.CloudConnectionValidationWorker.doProcesstask(CloudConnectionValidationWorker.java:33)
at com.gooddata.gcf.worker.AbstractWorker.processtask(AbstractWorker.java:27)
at com.gooddata.gcf.http.TaskHolder.call(TaskHolder.java:52)
at com.gooddata.gcf.http.TaskHolder.call(TaskHolder.java:26)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
Suppressed: java.lang.Exception: #block terminated with an error
使用 ParallelTransferOptions 更改 downloadToFileWithResponse 后,有时每个块的块大小为 0.5MB。
有人能告诉我为什么会这样吗?
我们有任何稳定的解决方案吗?
解决方法
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。