public RtqConsumer(IRtqConsumerSettings consumerSettings,
                           IRtqPeriodicJobRunner periodicJobRunner,
                           IRtqTaskHandlerRegistry taskHandlerRegistry,
                           RemoteTaskQueue remoteTaskQueue)
        {
            this.consumerSettings  = consumerSettings;
            this.periodicJobRunner = periodicJobRunner;
            RtqInternals           = remoteTaskQueue;
            var localQueueTaskCounter = new LocalQueueTaskCounter(consumerSettings.MaxRunningTasksCount, consumerSettings.MaxRunningContinuationsCount);

            localTaskQueue = new LocalTaskQueue(localQueueTaskCounter, taskHandlerRegistry, remoteTaskQueue);
            foreach (var taskTopic in taskHandlerRegistry.GetAllTaskTopicsToHandle())
            {
                var handlerManager = new HandlerManager(remoteTaskQueue.QueueKeyspace,
                                                        taskTopic,
                                                        consumerSettings.MaxRunningTasksCount,
                                                        localTaskQueue,
                                                        remoteTaskQueue.HandleTasksMetaStorage,
                                                        remoteTaskQueue.GlobalTime,
                                                        remoteTaskQueue.Logger);
                handlerManagers.Add(handlerManager);
            }
            reportConsumerStateToGraphitePeriodicJob = new ReportConsumerStateToGraphitePeriodicJob(remoteTaskQueue.QueueKeyspace, remoteTaskQueue.Profiler, handlerManagers);
            logger = remoteTaskQueue.Logger.ForContext(nameof(RtqConsumer));
        }
 public RtqEventFeedPeriodicJobRunner(IRtqPeriodicJobRunner rtqPeriodicJobRunner,
                                      IGraphiteClient graphiteClient,
                                      [NotNull] string eventFeedGraphitePathPrefix)
 {
     this.rtqPeriodicJobRunner = rtqPeriodicJobRunner;
     this.graphiteClient       = graphiteClient;
     graphitePathPrefix        = $"{eventFeedGraphitePathPrefix}.ActualizationLag.{Dns.GetHostName()}";
 }
        public RtqMonitoringEventFeeder(ILog logger,
                                        RtqElasticsearchIndexerSettings indexerSettings,
                                        IRtqElasticsearchClient elasticsearchClient,
                                        IGraphiteClient graphiteClient,
                                        IStatsDClient statsDClient,
                                        IRtqPeriodicJobRunner rtqPeriodicJobRunner,
                                        RemoteTaskQueue remoteTaskQueue)
        {
            this.logger              = logger.ForContext("CassandraDistributedTaskQueue").ForContext(nameof(RtqMonitoringEventFeeder));
            this.indexerSettings     = indexerSettings;
            this.elasticsearchClient = elasticsearchClient;
            GlobalTime  = remoteTaskQueue.GlobalTime;
            eventSource = new RtqEventSource(remoteTaskQueue.EventLogRepository);
            var eventFeedPeriodicJobRunner = new RtqEventFeedPeriodicJobRunner(rtqPeriodicJobRunner, graphiteClient, indexerSettings.EventFeedGraphitePathPrefix);

            eventFeedFactory = new EventFeedFactory(new RtqEventFeedGlobalTimeProvider(GlobalTime), eventFeedPeriodicJobRunner);
            var perfGraphiteReporter = new RtqMonitoringPerfGraphiteReporter(statsDClient, indexerSettings.PerfGraphitePathPrefix);
            var taskMetaProcessor    = new TaskMetaProcessor(this.logger, indexerSettings, elasticsearchClient, remoteTaskQueue, perfGraphiteReporter);

            eventConsumer = new RtqMonitoringEventConsumer(indexerSettings, taskMetaProcessor);
        }
        public RtqTaskCounterEventFeeder(ILog logger,
                                         ISerializer serializer,
                                         RtqTaskCounterSettings settings,
                                         IRtqTaskDataRegistry taskDataRegistry,
                                         IRtqTaskCounterStateStorage stateStorage,
                                         IGraphiteClient graphiteClient,
                                         IStatsDClient statsDClient,
                                         IRtqPeriodicJobRunner rtqPeriodicJobRunner,
                                         RemoteTaskQueue remoteTaskQueue)
        {
            this.serializer       = serializer;
            this.settings         = settings;
            this.taskDataRegistry = taskDataRegistry;
            this.stateStorage     = stateStorage;
            GlobalTime            = remoteTaskQueue.GlobalTime;
            var eventFeedPeriodicJobRunner = new RtqEventFeedPeriodicJobRunner(rtqPeriodicJobRunner, graphiteClient, settings.EventFeedGraphitePathPrefix);

            eventFeedFactory       = new EventFeedFactory(new RtqEventFeedGlobalTimeProvider(GlobalTime), eventFeedPeriodicJobRunner);
            eventSource            = new RtqEventSource(remoteTaskQueue.EventLogRepository);
            handleTasksMetaStorage = remoteTaskQueue.HandleTasksMetaStorage;
            perfGraphiteReporter   = new RtqMonitoringPerfGraphiteReporter(statsDClient, settings.PerfGraphitePathPrefix);
            this.logger            = logger.ForContext("CassandraDistributedTaskQueue").ForContext(nameof(RtqTaskCounterEventFeeder));
            this.logger.Info("Using RtqTaskCounterSettings: {RtqTaskCounterSettings}", new { RtqTaskCounterSettings = settings.ToPrettyJson() });
        }