예제 #1
0
        public ProcessServer(IServiceProvider serviceProvider,
                             JobBuilderOptions options,
                             IJobStorage jobStorage,
                             ILoggerFactory loggerFactory)
        {
            _serviceProvider = serviceProvider ?? throw new ArgumentNullException(nameof(_serviceProvider));
            _options         = options ?? throw new ArgumentNullException(nameof(options));
            _loggerFactory   = loggerFactory ?? throw new ArgumentNullException(nameof(loggerFactory));

            var properties = new Dictionary <string, object>(StringComparer.OrdinalIgnoreCase);

            JobDictionary = new ConcurrentDictionary <string, ProcessableCronJob>(_options.JobList.ToDictionary(p => p.Id, p => new ProcessableCronJob(p)));

            _processes = new List <IBackgroundTask>
            {
                new CronJobScheduler(_serviceProvider, new EveryMinuteThrottler(), ScheduleInstant.Factory, JobDictionary, jobStorage, _loggerFactory)
            };

            var context = new TaskContext(
                GetGloballyUniqueServerId(),
                properties,
                _cts.Token);

            _bootstrapTask = WrapProcess(this).CreateTask(_loggerFactory, context);
        }
예제 #2
0
 public SingleThreadJobProcessor(IJobStorage jobStorage,
                                 IJobExecutor jobExecutor,
                                 ILogger <SingleThreadJobProcessor> logger)
 {
     _jobStorage  = jobStorage;
     _jobExecutor = jobExecutor;
     _logger      = logger;
 }
예제 #3
0
 public JobExecutor(IServiceScopeFactory serviceScopeFactory,
                    ILogger <JobExecutor> logger,
                    IJobStorage jobStorage)
 {
     _serviceScopeFactory = serviceScopeFactory;
     _logger     = logger;
     _jobStorage = jobStorage;
 }
예제 #4
0
 public StorageApiTester(
     IJobStorage jobStorage,
     IComponentRegistry componentRegistry,
     ILogger <StorageApiTester> logger)
 {
     _jobStorage        = jobStorage;
     _componentRegistry = componentRegistry;
     _logger            = logger;
 }
예제 #5
0
        public JobExecutorTests()
        {
            var services = new ServiceCollection();

            services.AddSingleton <IJobStorage>(new MemoryJobStorage(new NullLogger <MemoryJobStorage>(), null));
            services.AddSingleton <IJobExecutor>(x => new JobExecutor(x.GetRequiredService <IServiceScopeFactory>(),
                                                                      new NullLogger <JobExecutor>(), x.GetRequiredService <IJobStorage>()));
            services.AddTransient <TestJob>();

            var provider = services.BuildServiceProvider();

            _jobStorage  = provider.GetRequiredService <IJobStorage>();
            _jobExecutor = provider.GetRequiredService <IJobExecutor>();
        }
예제 #6
0
 public CronJobScheduler(IServiceProvider serviceProvider,
                         IThrottler throttler,
                         Func <CrontabSchedule, TimeZoneInfo, IScheduleInstant> instantFactory,
                         ConcurrentDictionary <string, ProcessableCronJob> jobDictionary,
                         IJobStorage jobStorage,
                         ILoggerFactory loggerFactory)
 {
     _serviceProvider = serviceProvider;
     _throttler       = throttler;
     _instantFactory  = instantFactory;
     _jobDictionary   = jobDictionary;
     _jobStorage      = jobStorage;
     _loggerFactory   = loggerFactory;
     _logger          = _loggerFactory.CreateLogger <CronJobScheduler>();
 }
예제 #7
0
        public SubscribedComponentManager(
            IComponentRegistry componentRegistry,
            IComponentConfigUpdateNotifier componentConfigUpdateNotifier,

            IJobStorage jobStorage,
            IOptions <ComponentIdentifiers> options,
            IEventTracker <SubscribedComponentManager> logger)
        {
            _identifiers                   = options.Value;
            _componentRegistry             = componentRegistry;
            _componentConfigUpdateNotifier = componentConfigUpdateNotifier;
            _jobStorage = jobStorage;

            _logger = logger;
        }
예제 #8
0
 /// <summary>
 /// Called by DI
 /// </summary>
 public JobManager(IServiceProvider serviceProvider, ILogger <JobManager> logger, IJobStorage jobStorage)
 {
     _serviceProvider = serviceProvider;
     _logger          = logger;
     _jobStorage      = jobStorage;
 }
예제 #9
0
 public JobWorker(IJobStorage jobStorage, ILoggerFactory loggerFactory)
 {
     _jobStorage    = jobStorage;
     _loggerFactory = loggerFactory;
 }
 public MemoryJobStorageTests()
 {
     _jobStorage = new MemoryJobStorage(new NullLogger <MemoryJobStorage>(), null);
 }