示例#1
0
        public Task SendAsync(TMessage message)
        {
            //根据配置 查找对应位置 来获得Endpoint
            var point = _router.GetRouterPoint(message);

            if (point == null)
            {
                Logger.Error("Get routing error");
                throw new Rpc.Exceptions.RpcException("Get routing information error, please check the configuration");
            }
            if (point.RoutePointType == RoutePointType.Local) //本地调用流程
            {
                Logger.Debug("Call  local  service");
                var actor   = this._actorLocator.LocateServiceActor(message);
                var context = new LocalMockContext <TMessage>(this._handler); //MOCK Context
                return(actor.ReceiveAsync(context, message));
            }
            else
            {
                Logger.Debug("Call  remote  service{0}", point.RemoteAddress);
                var transport = this._transportFactory.CreateTransport(point.RemoteAddress);
                return(transport.SendAsync(message));
            }
            throw new NotImplementedException("There is no default address,call SendAsync(EndPoint serverAddress,AmpMessage message) to send messages");
        }
示例#2
0
        public Task SendAsync(AmpMessage message)
        {
            //根据配置 查找对应位置 来获得Endpoint
            var point = _router.GetRouterPoint(message);

            if (point == null)
            {
                Logger.Error("Get routing error");
                throw new RpcException("Get routing information error, please check the configuration");
            }
            if (point.RoutePointType == RoutePointType.Local) //本地调用流程
            {
                throw new RpcException("service not found");
            }
            else
            {
                Logger.Debug("Call  remote  service{0}", point.RemoteAddress);
                var transport = this._transportFactory.CreateTransport(point.RemoteAddress);
                return(transport.SendAsync(message));
            }
            throw new NotImplementedException("There is no default address,call SendAsync(EndPoint serverAddress,AmpMessage message) to send messages");
        }