示例#1
0
        protected override Task OnAbandoned(object sender, AbandonedEventArgs <T> abandonedEventArgs)
        {
            _timer.ScheduleNext(SystemClock.UtcNow.Add(_reportInterval));

            if (!(abandonedEventArgs.Entry is IQueueEntryMetadata metadata))
            {
                return(Task.CompletedTask);
            }

            string subMetricName = GetSubMetricName(abandonedEventArgs.Entry.Value);

            if (!String.IsNullOrEmpty(subMetricName))
            {
                _metricsClient.Counter(GetFullMetricName(subMetricName, "abandoned"));
            }
            _metricsClient.Counter(GetFullMetricName("abandoned"));

            int time = (int)metadata.ProcessingTime.TotalMilliseconds;

            if (!String.IsNullOrEmpty(subMetricName))
            {
                _metricsClient.Timer(GetFullMetricName(subMetricName, "processtime"), time);
            }
            _metricsClient.Timer(GetFullMetricName("processtime"), time);
            return(Task.CompletedTask);
        }
        protected override async Task OnAbandoned(object sender, AbandonedEventArgs <T> abandonedEventArgs)
        {
            _timer.ScheduleNext(SystemClock.UtcNow.Add(_reportInterval));

            var metadata = abandonedEventArgs.Entry as IQueueEntryMetadata;

            if (metadata == null)
            {
                return;
            }

            string subMetricName = GetSubMetricName(abandonedEventArgs.Entry.Value);

            if (!String.IsNullOrEmpty(subMetricName))
            {
                await _metricsClient.CounterAsync(GetFullMetricName(subMetricName, "abandoned")).AnyContext();
            }
            await _metricsClient.CounterAsync(GetFullMetricName("abandoned")).AnyContext();

            var time = (int)metadata.ProcessingTime.TotalMilliseconds;

            if (!String.IsNullOrEmpty(subMetricName))
            {
                await _metricsClient.TimerAsync(GetFullMetricName(subMetricName, "processtime"), time).AnyContext();
            }
            await _metricsClient.TimerAsync(GetFullMetricName("processtime"), time).AnyContext();
        }
示例#3
0
        protected override async Task OnAbandoned(object sender, AbandonedEventArgs <T> abandonedEventArgs)
        {
            await base.OnAbandoned(sender, abandonedEventArgs).AnyContext();

            _timer.ScheduleNext();

            var metadata = abandonedEventArgs.Entry as IQueueEntryMetadata;

            if (metadata == null)
            {
                return;
            }

            string customMetricName = GetCustomMetricName(abandonedEventArgs.Entry.Value);

            if (!String.IsNullOrEmpty(customMetricName))
            {
                await _metricsClient.CounterAsync(GetFullMetricName(customMetricName, "abandoned")).AnyContext();
            }
            await _metricsClient.CounterAsync(GetFullMetricName("abandoned")).AnyContext();

            var time = (int)metadata.ProcessingTime.TotalMilliseconds;

            if (!String.IsNullOrEmpty(customMetricName))
            {
                await _metricsClient.TimerAsync(GetFullMetricName(customMetricName, "processtime"), time).AnyContext();
            }
            await _metricsClient.TimerAsync(GetFullMetricName("processtime"), time).AnyContext();
        }
示例#4
0
        protected override async Task OnAbandoned(object sender, AbandonedEventArgs <T> abandonedEventArgs)
        {
            await base.OnAbandoned(sender, abandonedEventArgs).AnyContext();

            await ReportQueueCountAsync().AnyContext();

            string customMetricName = GetCustomMetricName(abandonedEventArgs.Metadata);
            string counter          = GetFullMetricName(customMetricName, "abandoned");
            await _metricsClient.CounterAsync(counter).AnyContext();

            string timer = GetFullMetricName(customMetricName, "abandontime");
            var    time  = (long)(abandonedEventArgs.Metadata?.ProcessingTime.TotalMilliseconds ?? 0D);
            await _metricsClient.TimerAsync(timer, time).AnyContext();
        }
示例#5
0
        protected virtual Task OnAbandonedAsync(IQueueEntry <T> entry)
        {
            var metadata = entry as QueueEntry <T>;

            if (metadata != null && metadata.DequeuedTimeUtc > DateTime.MinValue)
            {
                metadata.ProcessingTime = SystemClock.UtcNow.Subtract(metadata.DequeuedTimeUtc);
            }

            var args = new AbandonedEventArgs <T> {
                Queue = this, Entry = entry
            };

            return(Abandoned?.InvokeAsync(this, args) ?? Task.CompletedTask);
        }
示例#6
0
        protected virtual async Task OnAbandonedAsync(IQueueEntry <T> entry)
        {
            LastDequeueActivity = SystemClock.UtcNow;

            if (entry is QueueEntry <T> metadata && metadata.DequeuedTimeUtc > DateTime.MinValue)
            {
                metadata.ProcessingTime = SystemClock.UtcNow.Subtract(metadata.DequeuedTimeUtc);
            }

            if (Abandoned != null)
            {
                var args = new AbandonedEventArgs <T> {
                    Queue = this, Entry = entry
                };
                await Abandoned.InvokeAsync(this, args).AnyContext();
            }

            StopProcessQueueEntryActivity(entry);
        }
示例#7
0
        protected virtual Task OnAbandonedAsync(IQueueEntry <T> entry)
        {
            if (entry is QueueEntry <T> metadata && metadata.DequeuedTimeUtc > DateTime.MinValue)
            {
                metadata.ProcessingTime = SystemClock.UtcNow.Subtract(metadata.DequeuedTimeUtc);
            }

            var abandoned = Abandoned;

            if (abandoned == null)
            {
                return(Task.CompletedTask);
            }

            var args = new AbandonedEventArgs <T> {
                Queue = this, Entry = entry
            };

            return(abandoned.InvokeAsync(this, args));
        }
示例#8
0
 protected virtual Task OnAbandoned(object sender, AbandonedEventArgs <T> abandonedEventArgs)
 {
     return(TaskHelper.Completed());
 }