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)); } }
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") }); }
/// <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); } }