我想做的是添加自定义属性到遥测数据,因为它离开我的应用程序。目前,我正在使用遥测处理器实现这一目标,但是理想情况下,我希望从数据库读取要与事件一起发送的值。
是否可以在遥测处理器内执行异步操作?
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。显然,这种情况最终会发生,但并不是为了可以添加属性。
发布于 2016-10-06 01:04:56
我认为最好使用TelemetryInitializer来用额外的信息丰富遥测数据,TelemetryProcessor的目的更倾向于过滤而不是数据富集。
但是,我认为,如果您试图从遥测初始化器中调用SQL或HTTP依赖项,它可能会进入一个没完没了的循环:
我怀疑在这个时候异步是否真的被支持,它可能会有帮助(例如返回一个任务,等待价值来填补),但是它需要一个沉浸式的调查来考虑所有的案例。
https://stackoverflow.com/questions/39829978
复制相似问题