Beispiel #1
0
        public static IConsulServiceRegistrationBuilder AddHttpHealthCheckEndpoint(this IConsulServiceRegistrationBuilder registrationBuilder, int healthCheckPort)
        {
            var responseBody = Encoding.UTF8.GetBytes("OK");
            var address      = $"http://*:{healthCheckPort}/";

            var listener = new HttpListener
            {
                Prefixes = { address }
            };

            listener.Start();

            Task.Run(() =>
            {
                while (true)
                {
                    var context  = listener.GetContext();
                    var response = context.Response;

                    response.OutputStream.Write(responseBody, 0, responseBody.Length);
                    response.OutputStream.Close();
                }
            });

            return(registrationBuilder);
        }
Beispiel #2
0
 public static IConsulServiceRegistrationBuilder AddDefaultTTLCheck(this IConsulServiceRegistrationBuilder registrationBuilder)
 {
     return(registrationBuilder.AddTTLCheck(
                ttl: TimeSpan.FromSeconds(30),
                interval: TimeSpan.FromSeconds(10),
                deregisterFailedAfter: TimeSpan.FromMinutes(2)
                ));
 }
Beispiel #3
0
 public static IConsulServiceRegistrationBuilder AddDefaultHttpCheck(this IConsulServiceRegistrationBuilder registrationBuilder, string relativePath = "")
 {
     return(registrationBuilder.AddHttpCheck(
                relativePath: relativePath,
                interval: TimeSpan.FromSeconds(10),
                deregisterFailedAfter: TimeSpan.FromMinutes(2)
                ));
 }
Beispiel #4
0
        public static IConsulServiceRegistrationBuilder AddTTLCheck(this IConsulServiceRegistrationBuilder registrationBuilder, TimeSpan ttl, TimeSpan interval, TimeSpan deregisterFailedAfter)
        {
            var ttlCheck = new AgentCheckRegistration
            {
                DockerContainerID = Environment.MachineName,
                DeregisterCriticalServiceAfter = deregisterFailedAfter,
                TTL  = ttl,
                Name = "TTL check"
            };

            registrationBuilder.WithTTLUpdatingPeriod(interval);
            registrationBuilder.WithHealthCheck(ttlCheck);

            return(registrationBuilder);
        }
Beispiel #5
0
        public static IConsulServiceRegistrationBuilder AddHttpCheck(this IConsulServiceRegistrationBuilder registrationBuilder, int port, string relativePath, TimeSpan interval, TimeSpan deregisterFailedAfter)
        {
            var url       = $"{registrationBuilder.Address}:{port}{relativePath}";
            var httpCheck = new AgentCheckRegistration
            {
                DockerContainerID = Environment.MachineName,
                DeregisterCriticalServiceAfter = deregisterFailedAfter,
                Interval = interval,
                HTTP     = url,
                Name     = $"HTTP GET {url} check"
            };

            registrationBuilder.WithHealthCheck(httpCheck);

            return(registrationBuilder);
        }
Beispiel #6
0
 public static IConsulServiceRegistrationBuilder AddHttpCheck(this IConsulServiceRegistrationBuilder registrationBuilder, int port, TimeSpan interval, TimeSpan deregisterFailedAfter)
 {
     return(registrationBuilder.AddHttpCheck(port, string.Empty, interval, deregisterFailedAfter));
 }
Beispiel #7
0
 public static IConsulServiceRegistrationBuilder AddHttpCheck(this IConsulServiceRegistrationBuilder registrationBuilder, string relativePath, TimeSpan interval, TimeSpan deregisterFailedAfter)
 {
     return(registrationBuilder.AddHttpCheck(registrationBuilder.Port, relativePath, interval, deregisterFailedAfter));
 }