Exemplo n.º 1
0
 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));
        }
Exemplo n.º 3
0
        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);
        }