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 LocalTaskQueue(LocalQueueTaskCounter localQueueTaskCounter, IRtqTaskHandlerRegistry taskHandlerRegistry, IRtqInternals rtqInternals) { this.localQueueTaskCounter = localQueueTaskCounter; this.taskHandlerRegistry = taskHandlerRegistry; this.rtqInternals = rtqInternals; logger = rtqInternals.Logger.ForContext(nameof(LocalTaskQueue)); rtqInternals.AttachLocalTaskQueue(this); }
public HandlerTask( [NotNull] TaskIndexRecord taskIndexRecord, TaskQueueReason reason, [CanBeNull] TaskMetaInformation taskMeta, IRtqTaskHandlerRegistry taskHandlerRegistry, IRtqInternals rtqInternals) { this.taskIndexRecord = taskIndexRecord; this.reason = reason; this.taskMeta = taskMeta; this.taskHandlerRegistry = taskHandlerRegistry; serializer = rtqInternals.Serializer; taskProducer = rtqInternals.TaskProducer; handleTaskCollection = rtqInternals.HandleTaskCollection; remoteLockCreator = rtqInternals.RemoteLockCreator; taskExceptionInfoStorage = rtqInternals.TaskExceptionInfoStorage; handleTasksMetaStorage = rtqInternals.HandleTasksMetaStorage; taskMinimalStartTicksIndex = rtqInternals.TaskMinimalStartTicksIndex; rtqProfiler = rtqInternals.Profiler; globalTime = rtqInternals.GlobalTime; taskTtl = rtqInternals.TaskTtl; logger = rtqInternals.Logger.ForContext(nameof(HandlerTask)); taskShardMetricsContext = MetricsContext.For($"Shards.{taskIndexRecord.TaskIndexShardKey.TaskTopic}.{taskIndexRecord.TaskIndexShardKey.TaskState}.Tasks"); }