public RemoteTaskQueue(ILog logger, ISerializer serializer, IGlobalTime globalTime, ICassandraCluster cassandraCluster, IRtqSettings rtqSettings, IRtqTaskDataRegistry taskDataRegistry, IRtqProfiler rtqProfiler) { QueueKeyspace = rtqSettings.QueueKeyspace; TaskTtl = rtqSettings.TaskTtl; Logger = logger.ForContext("CassandraDistributedTaskQueue"); Serializer = serializer; GlobalTime = globalTime; TaskDataRegistry = taskDataRegistry; enableContinuationOptimization = rtqSettings.EnableContinuationOptimization; minTicksHolder = new RtqMinTicksHolder(cassandraCluster, rtqSettings); TaskMinimalStartTicksIndex = new TaskMinimalStartTicksIndex(cassandraCluster, serializer, rtqSettings, new OldestLiveRecordTicksHolder(minTicksHolder), Logger); var taskMetaStorage = new TaskMetaStorage(cassandraCluster, serializer, rtqSettings, Logger); EventLogRepository = new EventLogRepository(serializer, cassandraCluster, rtqSettings, minTicksHolder); childTaskIndex = new ChildTaskIndex(cassandraCluster, rtqSettings, serializer, taskMetaStorage); HandleTasksMetaStorage = new HandleTasksMetaStorage(taskMetaStorage, TaskMinimalStartTicksIndex, EventLogRepository, GlobalTime, childTaskIndex, taskDataRegistry, Logger); TaskDataStorage = new TaskDataStorage(cassandraCluster, rtqSettings, Logger); TaskExceptionInfoStorage = new TaskExceptionInfoStorage(cassandraCluster, serializer, rtqSettings, Logger); HandleTaskCollection = new HandleTaskCollection(HandleTasksMetaStorage, TaskDataStorage, TaskExceptionInfoStorage, rtqProfiler); lazyRemoteLockCreator = new Lazy <IRemoteLockCreator>(() => { var remoteLockImplementationSettings = CassandraRemoteLockImplementationSettings.Default(rtqSettings.QueueKeyspace, RtqColumnFamilyRegistry.LocksColumnFamilyName); var remoteLockImplementation = new CassandraRemoteLockImplementation(cassandraCluster, serializer, remoteLockImplementationSettings); var remoteLockerMetrics = new RemoteLockerMetrics($"{rtqSettings.QueueKeyspace}_{RtqColumnFamilyRegistry.LocksColumnFamilyName}"); return(new RemoteLocker(remoteLockImplementation, remoteLockerMetrics, Logger)); }); Profiler = rtqProfiler; }
public HandleTasksMetaStorage( ITaskMetaStorage taskMetaStorage, ITaskMinimalStartTicksIndex minimalStartTicksIndex, IEventLogRepository eventLogRepository, IGlobalTime globalTime, IChildTaskIndex childTaskIndex, IRtqTaskDataRegistry taskDataRegistry, ILog logger) { this.taskMetaStorage = taskMetaStorage; this.minimalStartTicksIndex = minimalStartTicksIndex; this.eventLogRepository = eventLogRepository; this.globalTime = globalTime; this.childTaskIndex = childTaskIndex; this.taskDataRegistry = taskDataRegistry; this.logger = logger.ForContext(nameof(HandleTasksMetaStorage)); }
public RtqTaskCounterStateManager(ILog logger, ISerializer serializer, IRtqTaskDataRegistry taskDataRegistry, IRtqTaskCounterStateStorage stateStorage, RtqTaskCounterSettings settings, RtqEventLogOffsetInterpreter offsetInterpreter, RtqMonitoringPerfGraphiteReporter perfGraphiteReporter) { this.logger = logger; this.serializer = serializer; this.taskDataRegistry = taskDataRegistry; this.stateStorage = stateStorage; this.settings = settings; this.offsetInterpreter = offsetInterpreter; this.perfGraphiteReporter = perfGraphiteReporter; CompositeFeedKey = settings.EventFeedKey; Blades = settings.BladeDelays.Select((delay, index) => new BladeId($"{settings.EventFeedKey}_Blade{index}", delay)).ToArray(); }
public RtqTaskHandlerRegistry(IContainer container, IRtqTaskDataRegistry taskDataRegistry) : base(taskDataRegistry) { this.container = container; Register <FakeFailTaskHandler>(); Register <FakePeriodicTaskHandler>(); Register <FakeMixedPeriodicAndFailTaskHandler>(); Register <SimpleTaskHandler>(); Register <AlphaTaskHandler>(); Register <BetaTaskHandler>(); Register <GammaTaskHandler>(); Register <DeltaTaskHandler>(); Register <EpsilonTaskHandler>(); Register <SlowTaskHandler>(); Register <ChainTaskHandler>(); Register <FailingTaskHandler>(); Register <TimeGuidTaskHandler>(); }
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() }); }
protected RtqTaskHandlerRegistryBase(IRtqTaskDataRegistry taskDataRegistry) { this.taskDataRegistry = taskDataRegistry; }
public RtqMonitoringApi(IRtqTaskManager taskManager, TaskSearchClient taskSearchClient, IRtqTaskDataRegistry taskDataRegistry) { this.taskManager = taskManager; this.taskSearchClient = taskSearchClient; this.taskDataRegistry = taskDataRegistry; }