0

我试图弄清楚如何监控使用 Windows azure 管理库发出的请求的进度,以便我们可以向客户显示。我们在 Akka.Net actor 中进行异步操作。

例如,我正在创建一个数据库,如

 SqlManagementClient.Databases.CreateAsync(Server, databaseCreateParameters);

基本上我得到了一个结果,DatabaseCreateResponse我可以检查它是否成功。无论如何我可以监控进度。我以为我可以得到一个请求 ID,然后查询状态。如何获取请求 ID?如何查询?

我只想在 Azure 门户上展示进度——理想情况下能够估计完成多长时间。

或者,我是否应该伪造进度报告并假设如果没有失败,它正在进行中没有问题?

这将适用于我们需要创建的许多项目,例如网站、DNS、存储等。

4

1 回答 1

1

DatabaseCreateResponse 有一个 RequestId 属性,可用于获取操作状态。要查询操作的状态,您可以使用Get Operation Status Rest API。

您基本上必须以轮询方式调用此 API 以获取状态,该状态将是FailedInProgressSucceeded。上面的链接显示了如何在轮询代码中构造对 this 的调用的示例。但是,您将无法准确估计操作需要多长时间才能完成。所以,是的,除非你得到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 并调用相同的方法。

于 2015-09-18T19:21:54.300 回答