当Azure-storage-blob中的uploadFileToBlockBlob时,对等方重置连接

时间:2019-08-06 10:25:10

标签: azure azure-storage azure-storage-blobs

我们正在使用java lib azure-storage-blob 11.0.1通过功能uploadFileToBlockBlob上传png文件。

有时我们会收到此错误java.io.IOException:连接被同级重置
它是随机发生的。

堆栈:

  

[java.lang.RuntimeException]:java.io.IOException:连接重置者   同行                                                                io.reactivex.internal.util.ExceptionHelper.wrapOrThrow()在   ExceptionHelper.java:45
                                                    io.reactivex.internal.observers.BlockingMultiObserver.blockingGet()在   BlockingMultiObserver.java:91
                                                                                      Single.java:2656中的io.reactivex.Single.blockingGet()

我们使用了azure-storage-blob版本10.1.0,但我们对该错误感到困惑

  

“ java.util.concurrent.TimeoutException”

我们尝试升级版本,现在我们收到此错误。

public String uploadFile(String blobName, File sourceFile) throws Exception {
    BlockBlobURL blobURL = containerURL.createBlockBlobURL(blobName);
    AsynchronousFileChannel fileChannel = AsynchronousFileChannel.open(sourceFile.toPath());

        try {
            BlobHTTPHeaders headers = new BlobHTTPHeaders();
            headers.withBlobContentType("image/png");
            TransferManagerUploadToBlockBlobOptions options = new TransferManagerUploadToBlockBlobOptions(null, headers, null, null, null);

            CommonRestResponse response = TransferManager.uploadFileToBlockBlob(fileChannel, blobURL, 8 * 1024 * 1024, null, options).blockingGet();
            return blobURL.toString();

        } finally {
            fileChannel.close();
        }
    }

1 个答案:

答案 0 :(得分:0)

如下图所示,根据GitHub上用于Java的Azure存储SDK的README.md的描述,A stepping stone in our path to v12. We do not currently recommend adopting this.表示正式回购。

enter image description here

因此,我建议降级为Storage SDK v8 for Java,而不是v10或降级为v12,它们都基于RxJava进行异步。 v8是同步方法的最新稳定版本。

<dependency>
    <groupId>com.microsoft.azure</groupId>
    <artifactId>azure-storage</artifactId>
    <version>8.4.0</version>
</dependency>