如何实现blob存储访问超时和显示消息

时间:2015-07-14 07:03:21

标签: azure azure-storage-blobs

我想在blob花费大量时间上传和下载时向最终用户显示消息。我找到了有用的博客here

简单线性重试政策

 public static RetryPolicy LinearRetry(int retryCount, TimeSpan intervalBetweenRetries)
{
  return () =>
  {
       return (int currentRetryCount, Exception lastException, out TimeSpan retryInterval) =>
       { 
           // Do custom work here               
           // Set backoff
           retryInterval = intervalBetweenRetries;    
           // Decide if we should retry, return bool
           return currentRetryCount < retryCount;          

       };
  };

}

但是在这里我没有得到如何在重试时向用户发回响应。这是正确的方式还是其他任何方式。请建议

1 个答案:

答案 0 :(得分:3)

Storage Client Library中的

OperationContext类有一个名为Retrying的事件,您可以使用该事件并将消息发送回客户端。

例如,我创建了一个简单的控制台应用程序,它试图创建一个blob容器。当我运行这个应用程序时,我故意关闭Internet访问,以便我可以模拟重试操作的情况。然后在这个事件消费者中,我只是将一些东西写回控制台。你可以简单地从那里引发另一个事件,将一条消息发送回你的客户端。

        var requestOptions = new BlobRequestOptions()
        {
            RetryPolicy = new ExponentialRetry(),
        };
        var operationContext = new OperationContext();
        operationContext.Retrying += (sender, args) =>
        {
            Console.WriteLine("I'm retrying ....");
        };
        var cloudStorageAccount = new CloudStorageAccount(new StorageCredentials(accountName, accountKey), true);
        var blobClient = cloudStorageAccount.CreateCloudBlobClient();
        var container = blobClient.GetContainerReference("test");
        container.CreateIfNotExists(requestOptions, operationContext);