Exemplo n.º 1
0
        public MinilockRedisProvider(MinilockRedisProviderConfigurator configurator, ILoggerFactory?loggerFactory = null)
        {
            if (configurator == null)
            {
                throw new ArgumentNullException(nameof(configurator));
            }

            _configuration = configurator.Build();

            _redLockFactory = InitializeRedLockFactory(_configuration, loggerFactory);
        }
Exemplo n.º 2
0
        private static RedLockFactory InitializeRedLockFactory(MinilockRedisConfiguration configuration, ILoggerFactory?loggerFactory)
        {
            var endpoints = configuration
                            .RedisInstances
                            .Select(redisInstance => new RedLockEndPoint(new DnsEndPoint(redisInstance.Address, redisInstance.Port))
            {
                Password       = redisInstance.AuthKey,
                RedisDatabase  = 0,
                RedisKeyFormat = "minilock:{0}",
            })
                            .ToList();

            var redLockFactory = RedLockFactory.Create(endpoints, loggerFactory);

            return(redLockFactory);
        }
        internal MinilockRedisConfiguration Build()
        {
            if (!HasRedisInstance)
            {
                throw new ArgumentException("At least one redis instance configuration required");
            }

            var result = new MinilockRedisConfiguration
            {
                RedisInstances    = RedisInstances,
                WaitTime          = WaitTime,
                RetryTime         = RetryTime,
                CancellationToken = CancellationToken,
                LockDuration      = LockDuration
            };

            return(result);
        }