public void OnNext(KeyValuePair <string, object> value) { if (value.Key.EndsWith(".Stop", StringComparison.OrdinalIgnoreCase)) { var activity = Activity.Current; ConsumerStats.AddEvent(activity.OperationName, activity.Duration); } }
public async Task Consume(ConsumeContext <RecordTimestamp> context) { var receivedTime = DateTime.UtcNow; var message = context.Message; _logger.LogInformation("Consumed message {MessageId}", context.MessageId); _logger.LogInformation("Task {TaskId}, Thread {ThreadId}, Producer {ProducerId}, Sent at {SentTime}", message.TaskId, message.ThreadId, message.ProducerId, message.SentTime); ConsumerStats.Add(message.ProducerId, (receivedTime - message.SentTime)); }
public async Task Consume(ConsumeContext <GenerateConsumerReport> context) { _logger.LogInformation("Generating report ..."); // Wait for queues to drain and all activity to complete while (ConsumerStats.LastUpdated < Options.InactivityTimeout) { await Task.Delay(TimeSpan.FromSeconds(10)); } // Generate the report var report = ConsumerStats.ToJson(); _logger.LogInformation(report); // Writer report to disk var date = DateTime.Now; var reportPath = Path.Join(Options.ReportPath, $"consumer-{Environment.MachineName}-{date:yyyymmdd}.json"); await File.WriteAllTextAsync(reportPath, report); }