2016-10-03 13 views
0

私がしたいのは、自分のアプリケーションを離れたときにテレメトリデータにカスタムプロパティを追加することです。現在私はテレメトリプロセッサを使用してこれを達成していますが、理想的にはデータベースからイベントとともに送信される値を読みたいと思います。テレメトリプロセッサ内での非同期操作Application Insights NodeJs

遠隔測定プロセッサー内で非同期操作を実行できますか?

var TraceProcessor = function (app) { 
    return function (envelope) { 

     var i; 
     var objTelemetryController = app.telemetryController; 

     objTelemetryController.__proto__.getActiveTraces('GLOBAL', function (err, objTraces) { 
      if (err) { 
       // Error controller log error 
       return; 
      } 

      if (objTraces) { 
       for (i = 0; i < objTraces.length; i++) { 
        envelope.data.baseData.properties['TraceProperty'] = objTraces[i]; 
       } 

       return true; 
      } 
     }); 
    }; 
}; 
module.exports = TraceProcessor; 

洞察が使用されている任意のテレメトリプロセッサから返される本当の必要があるため、テレメトリデータが送られていない彼のコードを使用しました。明らかにこれは最終的に起こりますが、プロパティを追加することはできません。

答えて

1

TelemetryInitializerを使用すると、遠隔測定データに余分な情報が豊富になることが考えられます。テレメトリプロセッサの目的は、データの豊富化ではなくフィルタリングに偏っています。

しかし、私はあなたがテレメトリ初期化子内からSQLまたはHTTPの依存関係を呼び出そうと、それは無限のサイクルに入るかもしれないと思う:

  • テレメトリ項目が
  • 初期化子
  • で処理された初期化子はSQLクエリを開始しますAI
  • は、SQLクエリを検出し、
  • それについてテレメトリ項目の処理を開始テレメトリ初期化子が
.... SQLを呼び出し

私はこの時点で実際に非同期がサ​​ポートされているとは思えません。タスクを返し、値が入力されるのを待つ)、すべてのケースを考慮するには没入型の調査が必要です。

関連する問題