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(); }
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 }); } }
void disconnect() { lock (_Gateway.OnlineMicroServices) { _Gateway.OnlineMicroServices.Remove(this); } SystemEventCenter.OnMicroServiceOnffline(this.ServiceInfo); _gatewayReferee.RemoveMicroService(this.ServiceInfo); Task.Run(() => { _ServiceProviderAllocator.ServiceInfoChanged(_Gateway.GetAllServiceProviders()); }); }