【发布时间】:2020-09-30 03:51:25
【问题描述】:
所以我有一个函数,它只是每 10 分钟从 blob 存储中下载文本并检查结果。此功能可以运行数天。但它经常(大约每天)在完成以下错误之前失败。
原因:com.microsoft.azure.storage.StorageException:不满足使用 HTTP 条件标头指定的条件。
我的代码很简单。
public String downloadTextBlob(CloudBlobDirectory dir, String filename) {
try {
return dir.getBlockBlobReference(filename).downloadText();
} catch (StorageException | IOException | URISyntaxException e) {
throw new WorkbenchRuntimeException(e.getMessage(), e);
}
}
我在here 上发布了同样的问题,我对有关使用 OperationContext 解决问题的答案很感兴趣。但问题不在 Java 上,答案并没有真正解释它实际上在做什么。
这是建议的解决方案(非 java 代码)
OperationContext context = new OperationContext();
context.SendingRequest += (sender, e) => {
e.Request.Headers["if-match"] = "*";
};
谁能解释这实际上在做什么?也许我可以如何在 Java 中复制它,我注意到 Java azure 存储 sdk 中有一个 OperationContext,我可以使用操作上下文作为参数调用 .downloadText()。我只是不确定如何处理 OperationContext。
【问题讨论】:
-
在下载操作运行时,blob 的内容是否可能发生了变化?
-
是的,当然。
标签: azure http azure-storage azure-blob-storage azure-java-sdk