示例#1
0
        public override void AddRpcRequest(RpcMonitorRequestInfo rpcRequestInfo)
        {
            base.AddRpcRequest(rpcRequestInfo);
            var rpcMonitorRequestRepository = new RpcMonitorRequestRepository();

            rpcMonitorRequestRepository.AddOneRequestInfo(rpcRequestInfo);
        }
 public void AddOneRequestInfo(RpcMonitorRequestInfo rpcMonitorRequestInfo)
 {
     if (rpcMonitorRequestInfo != null)
     {
         _RpcMonitorRequestMessageQueue.EnqueueMessage(RpcMonitorRequestModel.Create(rpcMonitorRequestInfo));
     }
 }
示例#3
0
        private RemotingRequest Create(RpcMonitorRequestInfo rpcMonitorRequestInfo, object[] arrMethodArgs, Type[] argmentTypes, MethodInfo methodInfo)
        {
            var methodCallInfo = RpcMethodCallInfo.Create(arrMethodArgs, methodInfo, _proxyType.FullName);
            var body           = _methodCallSerializer.Serialize(methodCallInfo);

            return(new RemotingRequest(rpcMonitorRequestInfo.RequestID, 100, body));
        }
 public static RpcMonitorRequestModel Create(RpcMonitorRequestInfo rpcMonitorRequestInfo)
 {
     return(new RpcMonitorRequestModel
     {
         IsSuccess = rpcMonitorRequestInfo.IsSuccess,
         RequestEndTime = rpcMonitorRequestInfo.RequestEndTime,
         RequestID = rpcMonitorRequestInfo.RequestID,
         RequestMethodName = rpcMonitorRequestInfo.RequestMethodName,
         RequestParameterCount = rpcMonitorRequestInfo.RequestParameterCount,
         RequestStartTime = rpcMonitorRequestInfo.RequestStartTime,
         RequestTypeName = rpcMonitorRequestInfo.RequestTypeName,
         TotalMillisecond = rpcMonitorRequestInfo.TotalMillisecond,
         RequestTimeMinute = rpcMonitorRequestInfo.RequestStartTime.ToString("yyyyMMddHHmm")
     });
 }
示例#5
0
        /// <summary>
        /// 发送远程请求
        /// </summary>
        /// <param name="arrMethodArgs"></param>
        /// <param name="argmentTypes"></param>
        /// <param name="methodInfo"></param>
        /// <returns></returns>
        public object DoMethodCall(object[] arrMethodArgs, Type[] argmentTypes, MethodInfo methodInfo)
        {
            var rpcMonitorRequestInfo = new RpcMonitorRequestInfo(methodInfo, argmentTypes?.Length ?? 0);

            try
            {
                var requestInfo = Create(arrMethodArgs, argmentTypes, methodInfo);
                var client      = RemotingClientFactory.GetClient(_proxyType);
                var response    = client.InvokeSync(requestInfo, _configProvider.GetConfig().RequestTimeouMillis);
                var result      = HandleResponse(response, methodInfo);
                return(result);
            }
            catch
            {
                rpcMonitorRequestInfo.IsSuccess = false;
                throw;
            }
            finally
            {
                rpcMonitorRequestInfo.RequestEndTime = DateTime.Now;
                _rpcMonitor.AddRpcRequest(rpcMonitorRequestInfo);
            }
        }