public DashboardService(IPubSubFactory pubSubFactory, ILogger logger, IProcessDataStorage cacheStorage, IStateManager stateManager, Bus bus) : base(nameof(DashboardService), logger) { _pubSubFactory = pubSubFactory; _cacheStorage = cacheStorage; _stateManager = stateManager; _bus = bus; }
//object _syncLock=new object(); public ProcessWatchDog(ILogger logger, IStateManager stateManager, IBatchEngineSubscribers batchEngineSubscribers, ICacheAside cacheAside, ISerializersFactory serializersFactory, IEntityFactory entityFactory, IEventAggregator eventAggregator, IProcessDataStorage storage, IPubSubFactory pubSubFactory, IResolver resolver, IBatchLoggerFactory loggerFactory, IProcessRepository registeredProcesses, ProcessVolumePipeline volumePipeline) : base("WatchDog", logger) { _stateManager = stateManager; _batchEngineSubscribers = batchEngineSubscribers; _cacheAside = cacheAside; _eventAggregator = eventAggregator; _storage = storage; _pubSubFactory = pubSubFactory; _resolver = resolver; _loggerFactory = loggerFactory; _registeredProcesses = registeredProcesses; _volumePipeline = volumePipeline; _groupsHandler = new GroupsHandler(logger, batchEngineSubscribers, stateManager, serializersFactory, entityFactory, resolver, loggerFactory); Interval = TimeSpan.FromMinutes(3); _subGroupRemoved = eventAggregator.Subscribe4Broadcast <ProcessGroupRemovedMessage>(RemoveGroup); _subRem = eventAggregator.Subscribe <TextMessage>(ProcessRemoved, Constants.EventProcessFinished); _serializer = SerializersFactory.Instance.GetSerializer(typeof(GroupMessage)); this._volumeGenSub = eventAggregator.Subscribe <TextMessage>(OnVolumeGenerated, Constants.EventProcessVolumeGenerated); _checkGroupSub = eventAggregator.Subscribe <TextMessage>(CheckProcessGroup, Constants.EventCheckGroupCommand); _retrySub = eventAggregator.Subscribe <TextMessage>(OnVolumeGenerated, Constants.EventProcessRetry); _healthSub = eventAggregator.Subscribe4Broadcast <HealthMessage>(PublishHealth); _systemLogger = _loggerFactory.GetSystemLogger(); this._processAddedSub = eventAggregator.Subscribe <TextMessage>(OnProcessGroupAdded, Constants.EventProcessGroupAdded); _volErrorSub = eventAggregator.Subscribe <VolumeErrorMessage>(OnProcessVolumeError); }
public Bus(IEntityFactory entityFactory, IVolumeHandler volumeHandler, IPubSubFactory pubSubFactory, IStateManager stateManager, IProcessDataStorage storage, IDistributedMutexFactory distributedMutexFactory, IResolver resolver, IBatchLoggerFactory batchLoggerFactory) { EntityFactory = entityFactory; VolumeHandler = volumeHandler; PubSubFactory = pubSubFactory; _stateManager = stateManager; _storage = storage; DistributedMutexFactory = distributedMutexFactory; _resolver = resolver; _batchLoggerFactory = batchLoggerFactory; _cts = new CancellationTokenSource(); _cancellationToken = _cts.Token; HookExceptionEvents(); _logger = batchLoggerFactory.GetSystemLogger(); EventAggregator = new TinyEventAggregator(); var wrapper = new BusStateManager(_stateManager, _logger, resolver); _stateManager = wrapper; var originalStorage = _storage; _storage = new CacheBusWrapper(_logger, originalStorage, resolver); _cacheCommandPipeline = new CacheStoragePipeline(_logger, _cancellationToken, originalStorage); _cacheAside = new CacheAside(_stateManager, _storage, EventAggregator, _logger, batchLoggerFactory); _processRepository = _resolver.Resolve <IProcessRepository>(); //var taskListener = resolver.Resolve<ITaskListener>(); //if (!ReferenceEquals(taskListener, _processRepository)) //{ // Console.WriteLine("ALERT"); //} _taskExecutorsRepo = new TaskExecutorsPool(_logger, _cacheAside, _cancellationToken, _stateManager, _processRepository, EventAggregator, resolver, _logger); //BuildCommandHandlerPipeline(); _statePersistencePipeline = new StatePersistencePipeline(_logger, _cancellationToken); this._databasePipeline = new DatabasePipeline(_logger, _cancellationToken, 0);//todo 500 _taskProcessorPipeline = GetTaskProcessorPipeLine(); //_grouPipeline=new GroupHandlerPipeline(_stateManager, _logger, _branchEngineSubscriber); //_volumePipeline = new ProcessVolumePipeline(_cancellationToken, _logger, _stateManager, _cacheAside, _processRepository, VolumeHandler, resolver, EventAggregator, _branchEngineSubscriber); _branchEngineSubscriber = new BatchEngineSubscribers(); //_watchDog = new ProcessWatchDog(_logger, StateManager, _branchEngineSubscriber, _cacheAside, SerializersFactory.Instance, EntityFactory, EventAggregator, Storage); //watchDog.Start(_cancellationToken);//todo // _grouPipeline = new Pipeline<GroupMessage>(_watchDog); //_watchDogPipeline = new Pipeline<IWatchDogMessage>(_watchDog); _taskProducer = new TaskProducerWorker(_logger, _cacheAside, VolumeHandler, resolver, batchLoggerFactory); _leaderManager = DistributedMutexFactory.CreateDistributedMutex(NodeSettings.Instance.LockKey, RunLocalWatchDog, () => SwitchToPubSubWatchDog(null), batchLoggerFactory.GetSystemLogger()); }
public JobScheduler(ISerializersFactory factory, IPubSubFactory pubSubFactory, IBatchLoggerFactory loggerFactory) { SystemLogger = loggerFactory.GetSystemLogger(); _publisher = pubSubFactory.GetPublisher(CancellationToken.None, SystemLogger, nameof(IWatchDogMessage)); //_ser = SerializersFactory.Instance.GetSerializer<List<JobCriteria>>(); //JsonSerializer serializer=new JsonSerializer(); _ser = factory.GetSerializer(typeof(JobCriteria)); }
public PubSubWatchDog(ILogger logger, IStateManager stateManager, IPubSubFactory publisherFactory, CancellationToken cancellationToken, IEventAggregator eventAggregator) { _logger = logger; _stateManager = stateManager; _eventAggregator = eventAggregator; _publisher = publisherFactory.GetPublisher(cancellationToken, logger, nameof(IWatchDogMessage)); _subscriber = publisherFactory.GetSubscriber(cancellationToken, logger, nameof(IWatchDogMessage)); _serializer = SerializersFactory.Instance.GetSerializer(typeof(GroupMessage)); _subscriber.Subscribe(nameof(ProcessRemovedWatchDogMessage), ProcessRemovedFromMaster); _subscriber.Subscribe(nameof(TriggerProducerWatchDogMessage), ProcessVolumeChangedFromMaster); _healthSub = _eventAggregator.Subscribe4Broadcast <HealthMessage>(PublishHealth); }