示例#1
0
        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);
            }
        }
示例#2
0
        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);
        }