コード例 #1
0
 private static void RemoveFromFailed(IDictionary <string, int> failures, ServiceInstanceData instance)
 {
     if (failures.ContainsKey(instance.InstanceId))
     {
         failures.Remove(instance.InstanceId);
     }
 }
コード例 #2
0
 private static void IncreaseFailures(IDictionary <string, int> failures, ServiceInstanceData instance)
 {
     if (failures.ContainsKey(instance.InstanceId))
     {
         failures[instance.InstanceId]++;
     }
     else
     {
         failures[instance.InstanceId] = 1;
     }
 }
コード例 #3
0
 private static async Task <bool> IsHealthy(ServiceInstanceData instance, ILogger logger)
 {
     try
     {
         var httpClient = new HttpClient {
             Timeout = TimeSpan.FromSeconds(2)
         };
         var code = (int)(await httpClient.GetAsync(instance.InstanceAddress + instance.HealthCheckAddress)).StatusCode;
         return(code >= 200 && code <= 299);
     }
     catch
     {
         return(false);
     }
 }
コード例 #4
0
 private static void RemoveInstanceOnMaxFailure(IDictionary <string, int> failures, ServiceInstanceData instance,
                                                IInstanceRepository repository, ILogger logger)
 {
     if (failures[instance.InstanceId] == MaxFailures)
     {
         logger.LogInformation(
             $"Reached max health check failures ({MaxFailures}). Removing instance {JsonConvert.SerializeObject(instance)}.");
         repository.Remove(instance.InstanceId);
     }
 }
コード例 #5
0
 public void Add(ServiceInstanceData instanceData)
 {
     _collection.Add(instanceData);
 }