public async Task ConsumeAsync(IEnumerable <IEventMessage> events) { EnsureArg.IsNotNull(events); EnsureArg.IsNotNull(_templateDefinition); var templateContent = _templateManager.GetTemplateAsString(_templateDefinition); await _measurementImportService.ProcessEventsAsync(events, templateContent, _logger).ConfigureAwait(false); }
public async Task ConsumeAsync(IEnumerable <IEventMessage> events) { EnsureArg.IsNotNull(_templateDefinition); var templateContent = _templateManager.GetTemplateAsString(_templateDefinition); var templateContext = CollectionContentTemplateFactory.Default.Create(templateContent); templateContext.EnsureValid(); var template = templateContext.Template; _logger.LogMetric( IomtMetrics.DeviceEvent(), events.Count()); IEnumerable <EventData> eventHubEvents = events .Select(x => { var eventData = new EventData(x.Body.ToArray()); eventData.SystemProperties = new SystemPropertiesCollection( x.SequenceNumber, x.EnqueuedTime.UtcDateTime, x.Offset.ToString(), x.PartitionId); foreach (KeyValuePair <string, object> entry in x.Properties) { eventData.Properties[entry.Key] = entry.Value; } foreach (KeyValuePair <string, object> entry in x.SystemProperties) { eventData.SystemProperties.TryAdd(entry.Key, entry.Value); } return(eventData); }); var dataNormalizationService = new MeasurementEventNormalizationService(_logger, template); await dataNormalizationService.ProcessAsync(eventHubEvents, _collector).ConfigureAwait(false); if (_normalizationOptions.Value.LogDeviceIngressSizeBytes) { var eventStats = await _eventProcessingMeter.CalculateEventStats(eventHubEvents); _logger.LogMetric( IomtMetrics.DeviceIngressSizeBytes(), eventStats.TotalEventsProcessedBytes); } }
public async Task ConsumeAsync(IEnumerable <IEventMessage> events) { EnsureArg.IsNotNull(_templateDefinition); var templateContent = _templateManager.GetTemplateAsString(_templateDefinition); var templateContext = CollectionContentTemplateFactory.Default.Create(templateContent); templateContext.EnsureValid(); var template = templateContext.Template; _logger.LogMetric( IomtMetrics.DeviceEvent(), events.Count()); IEnumerable <EventData> eventHubEvents = events .Select(x => { var eventData = new EventData(x.Body.ToArray()); eventData.SystemProperties = new SystemPropertiesCollection( x.SequenceNumber, x.EnqueuedTime.UtcDateTime, x.Offset.ToString(), x.PartitionId); foreach (KeyValuePair <string, object> entry in x.SystemProperties) { eventData.SystemProperties.TryAdd(entry.Key, entry.Value); } return(eventData); }); var dataNormalizationService = new MeasurementEventNormalizationService(_logger, template); // todo: support managed identity var connectionString = _env.GetSection("OutputEventHub").Value; var sb = new EventHubsConnectionStringBuilder(connectionString); var eventHubName = sb.EntityPath; var collector = CreateCollector(eventHubName, connectionString, _options); await dataNormalizationService.ProcessAsync(eventHubEvents, collector).ConfigureAwait(false); }
public async Task ConsumeAsync(IEnumerable <IEventMessage> events) { EnsureArg.IsNotNull(events); await _retryPolicy.ExecuteAsync(async() => await ConsumeAsyncImpl(events, _templateManager.GetTemplateAsString(_templateDefinition))); }