Exemple #1
0
        public static HealthCheckBuilder AddRedisCheck(this HealthCheckBuilder builder, string name, TimeSpan cacheDuration, ConcurrentDictionary <string, ConnectionMultiplexer> connectionCache)
        {
            builder.AddCheck($"RedisCheck({name})", () =>
            {
                try
                {
                    var factory      = new DefaultLoadBalancerFactory <ConnectionMultiplexer>();
                    var loadBalancer = factory.Resolve(() =>
                    {
                        return(connectionCache.Values.ToList());
                    });

                    var connect  = loadBalancer.Resolve();
                    var response = connect.GetStatus();

                    if (response != null && response.Any())
                    {
                        return(HealthCheckResult.Healthy($"Healthy"));
                    }
                    return(HealthCheckResult.Unhealthy($"Unhealthy"));
                }
                catch (Exception ex)
                {
                    return(HealthCheckResult.Unhealthy($"{ex.GetType().FullName}"));
                }
            }, cacheDuration);

            return(builder);
        }
Exemple #2
0
        private ILoadBalancer <ClientHelper> GetConnectionLoadBalancer(string nodeName)
        {
            var factory = new DefaultLoadBalancerFactory <ClientHelper>();

            return(factory.Resolve(() =>
            {
                var clients = new List <ClientHelper>();
                for (int i = 0; i < this._NumberOfConnections; i++)
                {
                    clients.Add(new ClientHelper(_DbNum, _clusterConfigOptions[nodeName], _KeyPrefix));
                }
                return clients;
            }));
        }