我想要做的是在遥测数据离开我的应用程序时将自定义属性添加到其中。目前,我正在使用遥测处理器来实现此目的,但理想情况下,我想从数据库中读取与事件一起发送的值。
是否可以在遥测处理器内执行异步操作?
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;
使用他的代码,不会发送遥测数据,因为见解需要从任何正在使用的遥测处理器返回 true。显然这最终会发生,但不能添加属性。
最佳答案
我认为最好使用TelemetryInitializer为了用额外的信息丰富遥测数据,TelemetryProcessor 的目的更多地倾向于过滤而不是数据丰富。
但是,我认为如果您尝试从遥测初始化程序中调用 SQL 或 HTTP 依赖项,它可能会进入无限循环:
- 遥测项目在初始化程序中处理
- 初始化程序启动 SQL 查询 AI
- 检测 SQL 查询并开始处理有关它的遥测项目
- 遥测初始化程序调用 SQL...
我怀疑此时此刻是否真的支持异步,它可能会有所帮助(例如返回任务并等待值填充),但需要进行沉浸式调查来考虑所有情况。
关于javascript - 使用 Application Insights NodeJ 进行遥测处理器内的异步操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39829978/