如何解决AppendBlockAsync-如果不存在则创建Blob
我们在使用AppendBlockAsync将数据附加到Blob的分布式环境中有多个并行工作器。每小时应创建一个新的Blob,所有工作人员将开始并行添加到新的Blob。
问题在于何时何地创建Blob。我看不到可以传递给AppendBlockAsync的有效AccessCondition,因此,如果某个blob不存在,它将创建一个并追加到该blob。
今天,我们正在捕获AppendBlockAsync的异常,并根据异常类型创建blob(如果不存在)。但是,从客户(工人)那里这样做似乎并不正确。服务器(Azure存储帐户)应具有处理此问题的方法。
解决方法
您应该在客户端中处理它。
例如,使用.Exists()
方法检查文件是否存在。如果不存在,则只需创建文件。
示例代码如下:
//your other code
var client = storageAccount.CreateCloudBlobClient();
var container = client.GetContainerReference("xxx");
var blobclient = container.GetAppendBlobReference("xx");
if (!blobclient.Exists())
{
try
{
blobclient.CreateOrReplace(AccessCondition.GenerateIfNotExistsCondition(),null,null);
}
catch (StorageException)
{ }
}
await blobclient.AppendBlockAsync(xxx);
//other code.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。