我们正在使用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();
}
}
答案 0 :(得分:0)
如下图所示,根据GitHub上用于Java的Azure存储SDK的README.md
的描述,A stepping stone in our path to v12. We do not currently recommend adopting this.
表示正式回购。
因此,我建议降级为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>