我正在使用 azure sdk for java v11.0.1 将文件上传到 blob 存储。这个错误有时一周出现一次,它会导致应用程序中断 :
java.util.concurrent.TimeoutException: The source did not signal an event for 60 seconds and has been terminated.
2023-03-21T10:30:53.721545956Z at io.reactivex.internal.operators.single.SingleTimeout$TimeoutMainObserver.run(SingleTimeout.java:123) ~[rxjava-2.2.9.jar!/:na]
2023-03-21T10:30:53.721551557Z at io.reactivex.internal.schedulers.ScheduledDirectTask.call(ScheduledDirectTask.java:38) ~[rxjava-2.2.9.jar!/:na]
2023-03-21T10:30:53.721555757Z at io.reactivex.internal.schedulers.ScheduledDirectTask.call(ScheduledDirectTask.java:26) ~[rxjava-2.2.9.jar!/:na]
2023-03-21T10:30:53.721559957Z at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) ~[na:na]
2023-03-21T10:30:53.721563857Z at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304) ~[na:na]
应用程序在重启后工作正常。可能是什么问题 ?我正在使用 azure-storage-blob 版本 11.0.1 和 spring boot 版本 2.1.6.
我正在使用 azure sdk for java v11.0.1 将文件上传到 blob 存储。这个错误有时一周出现一次,它会导致应用程序中断。
java.util.concurrent.TimeoutException: The source did not signal an event for 60 seconds and has been terminated.
2023-03-21T10:30:53.721545956Z at io.reactivex.internal.operators.single.SingleTimeout$TimeoutMainObserver.run(SingleTimeout.java:123) ~[rxjava-2.2.9.jar!/:na]
2023-03-21T10:30:53.721551557Z at io.reactivex.internal.schedulers.ScheduledDirectTask.call(ScheduledDirectTask.java:38) ~[rxjava-2.2.9.jar!/:na]
2023-03-21T10:30:53.721555757Z at io.reactivex.internal.schedulers.ScheduledDirectTask.call(ScheduledDirectTask.java:26) ~[rxjava-2.2.9.jar!/:na]
2023-03-21T10:30:53.721559957Z at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) ~[na:na]
2023-03-21T10:30:53.721563857Z at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304) ~[na:na]
以上错误消息表示尝试使用适用于 Java 的 SDK 将文件上传到 AZURE 存储 时发生超时。发生超时是因为源在 60 秒内没有发出事件信号并自动终止。
我使用下面的代码将Files上传到Azure Blob Storage。
import com.azure.storage.blob.BlobClient;
import com.azure.storage.blob.BlobContainerClient;
import com.azure.storage.blob.BlobServiceClient;
import com.azure.storage.blob.BlobServiceClientBuilder;
public class App {
public static void main(String[] args) {
String connectStr ="DefaultEndpointsProtocol=https;AccountName=<storageaccountname>;AccountKey=xxxxxxxxxxxxxxxxxxxxxxxxxxxxL132fS9qbo2NGFL/GdLuwyWiSn+AStm9symA==;EndpointSuffix=core.windows.net";
BlobServiceClient blobServiceClient = new BlobServiceClientBuilder().connectionString(connectStr).buildClient();
String containerName = "<containername>";
BlobContainerClient containerClient = blobServiceClient.getBlobContainerClient(containerName);
String localPath = "<localpath>;
BlobClient blobClient = containerClient.getBlobClient("sample09.xlsx");
blobClient.uploadFromFile(localPath);
System.out.println("File uploaded!!!!");;
}
}
您需要在
pom.xml
中更改以下依赖项
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-identity</artifactId>
<version>1.7.2</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-storage-blob</artifactId>
<version>12.21.1</version>
</dependency>
一旦运行上述代码文件就成功上传到Azure Container。