3

Azure DiagnosticsにはRoleInstanceDiagnosticManager.EndOnDemandTransfer()、よくわからない方法が用意されています。呼び出すだけではBeginOnDemandTransfer()GetActiveTransfers()常に空でないコレクションが返され、コードは転送が完了するのをいつ停止するかわかりません。

に電話する必要があるようですがEndOnDemandTransfer()、MSDN はそれについてあまり明確ではありません。

EndOnDemandTranfer()Azure Diagnostics ではいつ使用しますか?

4

2 に答える 2

1

オンデマンド転送が完了したら、 EndOnDemandTransferメソッドを呼び出す必要があります。オンデマンド転送を開始するときは、OnDemandTransferOptionsをメソッドに渡します。

var options = new OnDemandTransferOptions();
options.NotificationQueueName = "on-demand-notifications";
...

manager.BeginOnDemandTransfer(DataBufferName.Logs, options);

コード サンプルからわかるように、OnDemandTransferOptionsクラスでNotificationQueueNameを設定できます。これは、オンデマンド転送が完了するとメッセージを受信するキューです。キューを監視し、メッセージを読み、最後にメッセージにあるRequestIdを使用してEndOnDemandTranferメソッドを呼び出す必要があります。

このようなメッセージは次のようになります。

<OnDemandTransfers>
  <Logs>
    <NotificationQueueName>wad-transfer</NotificationQueueName>
    <LevelFilter>Undefined</LevelFilter>
    <From>2009-12-10T11:27:15.1376953Z</From>
    <To>2009-12-10T11:32:15.1376953Z</To>
    <RequestId>7352b663-ba11-413a-8db0-bca889ea84df</RequestId>
  </Logs>
</OnDemandTransfers>

詳細については、Neil のブログ ( http://convective.wordpress.com/2009/12/10/diagnostics-management-in-windows-azure/ ) を参照してください。

于 2012-05-03T07:16:19.933 に答える
0

Sandrino は正しいですが、別の視点を追加します。理論的には、オンデマンド転送を開始するときに、キュー (指定されている場合) に通知されるはずです。ただし、スケジュール転送を設定する方が簡単であることがわかりました。キューをポーリングして EndOnDemandTransfer を正しく呼び出すのは少し面倒です。

転送間隔を 1 分に設定すると、1 分ごとに転送が開始および続行されます。必要なデータを取得したら、設定を 0 に戻してオフにします。私見ですが、OnDemand を扱うよりも簡単です。

詳細: http://dunnry.com/blog/2012/04/16/GettingDiagnosticsDataFromWindowsAzure.aspx

于 2012-05-03T16:46:28.087 に答える