Azure Blob租赁和发布

Man*_*kar 1 .net c# azure azure-storage

string uri = "myurl";
string blobstatus = GetBlobStatus(uri);
if (blobstatus != LeaseStatus.Locked.ToString())
{
    string response = AquireBlob(uri);
    //process data.
    string abc = ":em";
    ReleaseBlob(response, uri);
}
Run Code Online (Sandbox Code Playgroud)

以上是我在blob上租用和释放锁的代码.我看这种方法用于多实例工作者的角色,我想运行之后的特定代码x的时间间隔,为多个实例可以在同一时间执行代码.

问题是我设法得到了LeaseId正确的但是当第二个实例检查blob租约状态时,它总是未指定.为什么会这样?任何线索?

我按照以下链接获得了先机.

使用存储客户端库租用Windows Azure Blob - blog.smarx.com

Gau*_*tri 6

我认为你的方法不应该首先依赖于检查blob状态,而是根据决定是否获得租约.您应该总是尝试获取租约并捕获该过程中抛出的异常.这样,如果此代码在多实例环境中运行,则只有一个实例能够获取租约(而其他实例只会抛出错误).

  • 对!首先测试是反模式,如`if(file.exists)delete(file)`.它会为您的代码添加竞争条件.只是尝试获得租约并处理失败. (5认同)