【问题标题】:AppendBlockAsync - Create Blob if not existsAppendBlockAsync - 如果不存在则创建 Blob
【发布时间】:2020-12-08 09:19:15
【问题描述】:

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

问题在于何时何地创建 blob。我没有看到可以传递给 AppendBlockAsync 的有效 AccessCondition,这样如果 blob 不存在,它会创建一个并附加到它。

今天,我们将异常捕获到 AppendBlockAsync 并根据异常类型创建 blob(如果它不存在)。但是从客户(工人)那里做这件事似乎是不对的。服务器(Azure 存储帐户)应该有办法处理这个问题。

【问题讨论】:

    标签: .net azure azure-storage


    【解决方案1】:

    你应该在客户端处理它。

    例如,使用.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.
    

    【讨论】:

      猜你喜欢
      • 2020-03-28
      • 2012-02-04
      • 2013-05-26
      • 1970-01-01
      • 1970-01-01
      • 2020-08-18
      • 2021-05-02
      • 2010-09-19
      • 2011-03-20
      相关资源
      最近更新 更多