Exemplo n.º 1
0
        private async Task ProcessHealthChecksAsync(HealthCheck[] healthChecks)
        {
            _logger?.LogInformation("Total number of health checks returned was {healthCheckCount}", healthChecks.Length);
            var infoList = BuildListOfHealthyServiceInstances(healthChecks);

            RemoveDeadInstances(infoList);
            var services = _store.GetServices();

            foreach (var service in services)
            {
                var infoService = await _source.GetServiceInstancesAsync(service.Key);

                foreach (var info in infoService)
                {
                    var instance = GetInstance(info, service.Value);
                    if (instance == null)
                    {
                        await CreateNewServiceInstanceAsync(service, info);
                    }
                    else
                    {
                        UpdateExistingRoutes(instance, info);
                    }
                }
            }
            _router.CleanUpRoutes();
            _config.OnRoutesBuilt?.Invoke(services.Keys.ToArray());
        }