public Task SendAsync(TMessage message) { var actor = this._actorLocator.LocateServiceActor(message); var context = new LocalMockContext <TMessage>(this._handler); //MOCK Context return(actor.ReceiveAsync(context, message)); }
public Task SendAsync(TMessage message) { //根据配置 查找对应位置 来获得Endpoint var point = _router.GetRouterPoint(message); if (point == null) { Logger.LogError("Get routing error"); throw new Rpc.Exceptions.RpcException("Get routing information error, please check the configuration"); } if (point.RoutePointType == RoutePointType.Local) { //本地调用流程 Logger.LogDebug("Call local service"); var actor = this._actorLocator.LocateServiceActor(message); if (actor == null) { throw new Exceptions.RpcException($"ServiceActor 不存在,未配置对应的服务地址,MethodIdentifier={message.MethodIdentifier}"); } var context = new LocalMockContext <TMessage>(this._handler); //MOCK Context return(actor.ReceiveAsync(context, message)); } else { Logger.LogDebug("Call remote service, {0}", point.RemoteAddress); var transport = this._factory.CreateTransport(point.RemoteAddress); if (transport == null) { throw new Exceptions.RpcException("ITransport 不存在,或地址错误"); } return(transport.SendAsync(message)); } throw new NotImplementedException("There is no default address,call SendAsync(EndPoint serverAddress,AmpMessage message) to send messages"); }