Esempio n. 1
0
        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;
        }
Esempio n. 2
0
 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));
 }
Esempio n. 3
0
 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();
 }
Esempio n. 4
0
 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;
 }
Esempio n. 7
0
 public RtqMonitoringApi(IRtqTaskManager taskManager, TaskSearchClient taskSearchClient, IRtqTaskDataRegistry taskDataRegistry)
 {
     this.taskManager      = taskManager;
     this.taskSearchClient = taskSearchClient;
     this.taskDataRegistry = taskDataRegistry;
 }