public async Task StopAsync() { _logger.LogInformation("Unregistering from Nacos"); var removeRequest = new RemoveInstanceRequest { ServiceName = _options.ServiceName, Ip = uri.Host, Port = uri.Port, GroupName = _options.GroupName, NamespaceId = _options.Namespace, ClusterName = _options.ClusterName, Ephemeral = false }; for (int i = 0; i < 3; i++) { try { var flag = await _client.RemoveInstanceAsync(removeRequest); _logger.LogDebug("remove instance, status = {0}", flag); break; } catch (Exception ex) { _logger.LogError(ex, "Unregistering error, count = {0}", i + 1); } } _timer?.Change(Timeout.Infinite, 0); _timer?.Dispose(); }
public async Task StopAsync(CancellationToken cancellationToken) { _logger.LogWarning("Unregistering from Nacos, serviceName={0}", _options.ServiceName); var removeRequest = new RemoveInstanceRequest { ServiceName = _options.ServiceName, Ip = uri.Host, Port = uri.Port, GroupName = _options.GroupName, NamespaceId = _options.Namespace, ClusterName = _options.ClusterName, Ephemeral = true }; for (int i = 0; i < 3; i++) { try { _logger.LogWarning("begin to remove instance, {0}", JsonConvert.SerializeObject(removeRequest)); var flag = await _client.RemoveInstanceAsync(removeRequest); _logger.LogWarning("remove instance, status = {0}", flag); break; } catch (Exception ex) { _logger.LogError(ex, "Unregistering error, count = {0}", i + 1); } } _timer?.Change(Timeout.Infinite, 0); }
public async Task AddRemoveBeatAsync_Should_Succeed() { var request = new RegisterInstanceRequest { ServiceName = "testservice", Ip = "192.168.0.74", Ephemeral = true, Port = 9999 }; var resA = await _namingClient.RegisterInstanceAsync(request); await Task.Delay(10000); var requestA = new RemoveInstanceRequest { ServiceName = "testservice", Ip = "192.168.0.74", Ephemeral = true, Port = 9999 }; var resB = await _namingClient.RemoveInstanceAsync(requestA); await Task.Delay(10000); Assert.True(true); }
public static IApplicationBuilder UseNacosAspNetCore(this IApplicationBuilder app) { var namingClient = app.ApplicationServices.GetRequiredService <INacosNamingClient>(); var nacosAspNetCoreConfig = app.ApplicationServices.GetRequiredService <IOptions <NacosAspNetCoreOptions> >(); var logger = app.ApplicationServices.GetRequiredService <ILoggerFactory>().CreateLogger("Nacos.AspNetCore"); var lifetime = app.ApplicationServices.GetRequiredService <IApplicationLifetime>(); if (!(app.Properties["server.Features"] is FeatureCollection features)) { return(app); } var addresses = features.Get <IServerAddressesFeature>(); var address = addresses.Addresses.First(); var uri = new Uri(address); //var registrerRequest = new RegisterInstanceRequest //{ // ServiceName = nacosAspNetCoreConfig.Value.ServiceName, // Ip = uri.Host, // Port = uri.Port, // GroupName = nacosAspNetCoreConfig.Value.GroupName, // NamespaceId = nacosAspNetCoreConfig.Value.Namespace, // ClusterName = nacosAspNetCoreConfig.Value.ClusterName, // Enable = true, // Ephemeral = false, //}; var timer = new Timer(async x => { await SendAsync(namingClient, nacosAspNetCoreConfig.Value, uri, logger); }, null, TimeSpan.Zero, TimeSpan.FromSeconds(10)); lifetime.ApplicationStopping.Register(() => { logger.LogInformation("Unregistering from Nacos"); var removeRequest = new RemoveInstanceRequest { ServiceName = nacosAspNetCoreConfig.Value.ServiceName, Ip = uri.Host, Port = uri.Port, GroupName = nacosAspNetCoreConfig.Value.GroupName, NamespaceId = nacosAspNetCoreConfig.Value.Namespace, ClusterName = nacosAspNetCoreConfig.Value.ClusterName, Ephemeral = false }; namingClient.RemoveInstanceAsync(removeRequest).ConfigureAwait(true); }); return(app); }
public void Deregister(INacosRegistration registration) { RemoveInstanceRequest request = new RemoveInstanceRequest() { Ip = registration.Host, Port = registration.Port, ServiceName = registration.ServiceId }; _nacosClient.RemoveInstanceAsync(request); }
public async Task RemoveInstance_Should_Succeed() { var request = new RemoveInstanceRequest { ServiceName = "testservice", Ip = "192.168.0.74", Port = 9999 }; var res = await _namingClient.RemoveInstanceAsync(request); Assert.True(res); }
public Task ShutdownAsync() { var tempRegistration = _registrar.Registration; var removeRequest = new RemoveInstanceRequest { ServiceName = tempRegistration.ServiceId, Ip = tempRegistration.Host, Port = tempRegistration.Port, GroupName = tempRegistration.GroupName, NamespaceId = tempRegistration.Namespace, ClusterName = tempRegistration.ClusterName, Ephemeral = tempRegistration.Ephemeral }; return(_client.RemoveInstanceAsync(removeRequest)); }
public IHttpActionResult RemoveServiceInstance(RemoveInstanceRequest request) { var config = Owin.ApiGateway.Configuration.Configuration.Current; var endpoint = config.Endpoints.FirstOrDefault(e => e.Id.Equals(request.EndpointId)); if (endpoint != null) { var instance = endpoint.Instances.Instance.FirstOrDefault(i => i.Url.Equals(request.InstanceUrl)); if (instance != null) { endpoint.Instances.Instance.Remove(instance); this.SaveAndNotify(config); return(this.Ok()); } } return(this.NotFound()); }
public static IApplicationBuilder UseNacosAspNetCore(this IApplicationBuilder app) { var namingClient = app.ApplicationServices.GetRequiredService <INacosNamingClient>(); var nacosAspNetCoreConfig = app.ApplicationServices.GetRequiredService <IOptions <NacosAspNetCoreOptions> >(); var logger = app.ApplicationServices.GetRequiredService <ILoggerFactory>().CreateLogger("Nacos.AspNetCore"); var uri = GetUri(app, nacosAspNetCoreConfig.Value); var timer = new Timer(async x => { await SendAsync(namingClient, nacosAspNetCoreConfig.Value, uri, logger); }, null, TimeSpan.Zero, TimeSpan.FromSeconds(10)); var lifetime = app.ApplicationServices.GetRequiredService <IHostApplicationLifetime>(); lifetime.ApplicationStopping.Register(() => { logger.LogInformation("Unregistering from Nacos"); var removeRequest = new RemoveInstanceRequest { ServiceName = nacosAspNetCoreConfig.Value.ServiceName, Ip = uri.Host, Port = uri.Port, GroupName = nacosAspNetCoreConfig.Value.GroupName, NamespaceId = nacosAspNetCoreConfig.Value.Namespace, ClusterName = nacosAspNetCoreConfig.Value.ClusterName, Ephemeral = false }; namingClient.RemoveInstanceAsync(removeRequest).ConfigureAwait(true); timer.Change(Timeout.Infinite, 0); timer.Dispose(); }); return(app); }