Esempio n. 1
0
        public void HealthyCheck(NetClient netclient, GatewayCommand registerCmd)
        {
            this.NetClient   = netclient;
            ServiceInfo      = registerCmd.Content.FromJson <RegisterServiceInfo>();
            ServiceInfo.Host = ((IPEndPoint)NetClient.Socket.RemoteEndPoint).Address.ToString();
            if (string.IsNullOrEmpty(ServiceInfo.ServiceAddress))
            {
                ServiceInfo.ServiceAddress = ServiceInfo.Host;
            }

            _gatewayReferee.AddMicroService(ServiceInfo);

            NetClient.WriteServiceData(new InvokeResult {
                Success = true
            });
            lock (_Gateway.OnlineMicroServices)
            {
                _Gateway.OnlineMicroServices.Add(this);
            }
            SystemEventCenter.OnMicroServiceOnline(this.ServiceInfo);

            Task.Run(() => {
                _ServiceProviderAllocator.ServiceInfoChanged(_Gateway.GetAllServiceProviders());
            });
            _Logger?.LogInformation($"微服务{this.ServiceInfo.ServiceNames.ToJsonString()} {this.ServiceInfo.Host}:{this.ServiceInfo.Port}注册");

            checkState();
        }
Esempio n. 2
0
        public void Handle(NetClient netclient, GatewayCommand cmd)
        {
            var keys    = cmd.Content.FromJson <string[]>();
            var service = _gateway.GetServiceById(cmd.Header["ServiceId"]);

            if (service != null && service.Host == ((IPEndPoint)netclient.Socket.RemoteEndPoint).Address.ToString())
            {
                List <string> failed = new List <string>();
                foreach (var key in keys)
                {
                    if (_lockKeyManager.TryLock(key, service, false) == false)
                    {
                        failed.Add(key);
                    }
                }
                SystemEventCenter.OnMicroServiceUploadLockedKeyCompleted(service);
                netclient.WriteServiceData(new InvokeResult
                {
                    Success = true,
                    Data    = failed.ToArray()
                });
            }
            else
            {
                netclient.WriteServiceData(new InvokeResult
                {
                    Success = false
                });
            }
        }
Esempio n. 3
0
        void disconnect()
        {
            lock (_Gateway.OnlineMicroServices)
            {
                _Gateway.OnlineMicroServices.Remove(this);
            }
            SystemEventCenter.OnMicroServiceOnffline(this.ServiceInfo);

            _gatewayReferee.RemoveMicroService(this.ServiceInfo);


            Task.Run(() => {
                _ServiceProviderAllocator.ServiceInfoChanged(_Gateway.GetAllServiceProviders());
            });
        }