我正在尝试弄清楚如何监控使用Windows Azure管理库发出的请求的进度,以便我们可以向客户显示。我们在Akka.Net演员中做了Async。
例如我正在创建一个像
这样的数据库 SqlManagementClient.Databases.CreateAsync(Server, databaseCreateParameters);
基本上我得到DatabaseCreateResponse
的结果,我可以检查它是否成功。无论如何我可以监控进度。我假设我可以获取请求ID,然后查询状态。我如何获得请求ID?我该如何查询?
我只是希望在Azure门户网站上显示进度 - 理想情况下可以估算完成的时间。
或者,我只是假装进度报告并假设其中没有失败而没有问题吗?
这将适用于我们需要创建的许多项目,如网站,DNS,存储等。
答案 0 :(得分:1)
DatabaseCreateResponse有一个RequestId属性,可用于获取操作状态。要查询操作的状态,您可以使用Get Operation Status Rest API。
您必须以轮询方式调用此API才能获取状态,该状态将是失败, InProgress 或成功。上面的链接显示了如何在轮询代码中构造对此的调用的示例。您无法准确估计完成操作所需的时间。所以,是的,除非你得到 InProgress 之外的其他人,否则你会认为没有失败。
由于您正在使用管理库,因此您的代码可能看起来像这样,以获取RequestId并调用 GetOperationStatusAsync 来检查状态。
var dbCreateRequestId = dbCreateResponse.RequestId;
var opStatus = await mgmtClient.GetOperationStatusAsync(dbCreateRequestId, cancellationToken);
switch (opStatus.Status)
{
case OperationStatus.Failed:
// Report failed
break;
case OperationStatus.InProgress:
// Report in progress
break;
case OperationStatus.Succeeded:
// Report succeeded
break;
}
此外,您可以使用此方法检查您提到的其他项目的状态。只需获取有关这些项的操作的RequestId,并调用相同的方法。