Example #1
0
        private void ProcessEvent(BasicDeliverEventArgs ea)
        {
            _qps.Add("r");
            var header     = new HeadersAnalysis(ea.Body);
            var clienttime = header.ClientDate;
            var span       = Math.Abs((DateTime.Now - clienttime).TotalMilliseconds);

            if (Configs.Delay != 0 && span > Configs.Delay * 1000)
            {
                ReplayTo(header.Url, DateTime.Now, ea, 402, $"请求已超时 请求 {ea.RoutingKey} 耗时 {span.ToString()}ms", ContentType.Text);
                return;
            }
            var action = _routing.Route(header.Url.AbsolutePath);

            if (action == null)
            {
                ReplayTo(header.Url, DateTime.Now, ea, 401, "未找到匹配请求的控制器或方法", ContentType.Text);
                return;
            }
            var reques = new Request()
            {
                Headers       = header.Headers,
                Action        = action,
                Url           = header.Url,
                Seralize      = RPCWrite.CreateSeralize(header.ContentType, header.Encode),
                ContentLength = header.ContentLength,
                Body          = header.GetBodys()
            };

            Excute(reques, ea);
        }