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));
        }
Ejemplo n.º 2
0
 void IRtqInternals.AttachLocalTaskQueue([NotNull] LocalTaskQueue localTaskQueueInstance)
 {
     localTaskQueue = localTaskQueueInstance;
 }