コード例 #1
0
ファイル: MockRpcClient.cs プロジェクト: hassiumsoft/dotbpe
        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));
        }
コード例 #2
0
        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");
        }