AppendBlockAsync - 如果不存在则创建 Blob

AppendBlockAsync - Create Blob if not exists

我们在使用 AppendBlockAsync 将数据附加到 blob 的分布式环境中有多个并行工作器。每小时应该创建一个新的 blob,所有工作人员将开始并行地附加到新的 blob。

问题是何时何地创建 blob。我没有看到可以传递给 AppendBlockAsync 的有效 AccessCondition,这样如果 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.