public override async Task Invoke(IInvokeHandlerContext context, Func <Task> next) { var sw = Stopwatch.StartNew(); await next(); sw.Stop(); if (sw.Elapsed > CoderrSharedData.MaxExecutionTime && _duplicateDetector.Validate(context.MessageId)) { ReportSlowMessageHandler(context, sw.Elapsed); } }
private bool EnsureNotReported(ITransportReceiveContext context) { if (_duplicateDetector.Validate(context.Message.MessageId)) { return(true); } if (!context.Extensions.TryGet(out CoderrSharedData data)) { data = new CoderrSharedData(); context.Extensions.Set(data); return(true); } return(false); }