2015-09-18 57 views
0

我想弄清楚如何監控使用Windows Azure管理庫進行的請求的進度,以便我們可以向客戶展示。我們在Akka.Net actor中執行Async。如何監視使用Azure管理庫創建數據庫的進度?

比如我創建一個數據庫像

SqlManagementClient.Databases.CreateAsync(Server, databaseCreateParameters); 

基本上,我得到的DatabaseCreateResponse的結果,我可以檢查它是否成功。無論如何,我可以監控進度。我認爲我可以得到一個請求ID,然後查詢狀態。我如何獲取請求ID?我如何查詢?

我只想在Azure門戶上顯示進度 - 理想情況下可以估算完成的時間。

或者,我只是假設進度報告,並假設如果沒有失敗的進展沒有問題?

這將適用於我們需要創建一個類似的網站,DNS,儲存等

回答

1

的DatabaseCreateResponse有一個請求ID屬性掛關閉它,你可以用它來獲得操作狀態的許多項目。要查詢操作的狀態,您可以使用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並調用這個相同的方法。

+0

這太好了。我懷疑過這樣的事情,就像我通過API看到的一樣。我現在的問題是獲取RequestId。如果在數據庫上執行CreateAsync,則我得到的DatabaseCreateResponse結果需要5-10秒,然後返回爲201 Created。所以它已經成功了。我似乎無法在返回結果之前找到requestId。當我做一個存儲賬戶的創建需要更長的時間,但是做同樣的事情 – GraemeMiller