public RedisPartitionCaching(UraganoSettings uraganoSettings, IServiceProvider serviceProvider, ICodec codec, IConsistentHash <RedisConnection> consistentHash) { Codec = codec; var redisOptions = (RedisOptions)uraganoSettings.CachingOptions; ConsistentHash = consistentHash; var policy = serviceProvider.GetService <Func <string, IEnumerable <RedisConnection>, RedisConnection> >(); if (policy == null) { foreach (var item in redisOptions.ConnectionStrings) { ConsistentHash.AddNode(item, item.ToString()); } policy = (key, connections) => ConsistentHash.GetNodeForKey(key); } string NodeRule(string key) { var connection = policy(key, redisOptions.ConnectionStrings); return($"{connection.Host}:{connection.Port}/{connection.DefaultDatabase}"); } RedisHelper.Initialization(new CSRedis.CSRedisClient(NodeRule, redisOptions.ConnectionStrings.Select(p => p.ToString()).ToArray())); Cache = new Microsoft.Extensions.Caching.Redis.CSRedisCache(RedisHelper.Instance); }
public TimerWorkerService( IConsistentHash <Node> hash, IEventThreadRepository eventThreadRepository, IEventRepository eventRepository, IWorkerRepository workerRepository, ILogger <TimerWorkerService> logger, IOptions <Node> settings) : base(hash, eventThreadRepository, eventRepository, workerRepository, logger, settings) { }
public ReactiveWorkerService(IConsistentHash <Node> hash, IEventThreadRepository eventThreadRepository, IEventRepository eventRepository, IWorkerRepository workerRepository, ILogger <ReactiveWorkerService> logger, IOptions <Node> settings) : base(hash, eventThreadRepository, eventRepository, workerRepository, logger, settings) { _scheduler = new NewThreadScheduler(ts => new Thread(ts) { Name = "Emitter scheduler" }); _subject = new BehaviorSubject <IEnumerable <int> >(Enumerable.Empty <int>()); }
public WorkerService( IConsistentHash <Node> hash, IEventThreadRepository eventThreadRepository, IEventRepository eventRepository, IWorkerRepository workerRepository, ILogger logger, IOptions <Node> settings) { _hash = hash; _eventThreadRepository = eventThreadRepository; _eventRepository = eventRepository; _workerRepository = workerRepository; Logger = logger; _settings = settings.Value; NodeHashes = new List <int>(); }