コード例 #1
0
 public static Guid Schedule(this IJobScheduler scheduler, Func <JobExecutionContext, Task> handler, OverlapHandling overlapHandling = OverlapHandling.Allow)
 {
     return(scheduler.Schedule("@immediately", async(context) =>
     {
         await handler(context);
     }, overlapHandling));
 }
コード例 #2
0
 public WinService(IJobScheduler jobScheduler)
 {
     ServiceStartupLogger.LogMessage("Started WinService.ctor");
     InitializeComponent();
     this.JobScheduler = jobScheduler;
     ServiceStartupLogger.LogMessage("Done WinService.ctor");
 }
コード例 #3
0
 public RemindMeService(DiscordSocketClient discord, IJobScheduler scheduler,
                        IRepository <Reminder> reminderRepository)
     : base(discord)
 {
     _reminderRepository        = reminderRepository;
     scheduler.EveryTenSeconds += AnnounceElapsedIntervalsAsync;
 }
コード例 #4
0
		public WinService(IJobScheduler jobScheduler)
		{
			ServiceStartupLogger.LogMessage("Started WinService.ctor");
			InitializeComponent();
			this.JobScheduler = jobScheduler;
			ServiceStartupLogger.LogMessage("Done WinService.ctor");
		}
コード例 #5
0
ファイル: JobModule.cs プロジェクト: lulzzz/Fabric.Databus
        public JobModule(ILogger logger, IJobScheduler jobScheduler) : base("/jobs")
        {
            this.RequiresClaims(claim => claim.Value.Equals("fabric/databus.queuejob", StringComparison.OrdinalIgnoreCase));

            Post("/", parameters =>
            {
                var body        = RequestStream.FromStream(Request.Body).AsString();
                var queryConfig = body.FromXml <Job>();

                var jobId = jobScheduler.ExecuteJobImmediately(queryConfig);

                var uriBuilder = new UriBuilder(Request.Url.Scheme, Request.Url.HostName,
                                                Request.Url.Port ?? 80, $"jobstatus/{jobId}");

                var statusUri = uriBuilder.ToString();

                var model = new
                {
                    JobId = jobId,
                    links = new[]
                    {
                        new
                        {
                            status = statusUri
                        }
                    }
                };

                return(Negotiate
                       .WithModel(model)
                       .WithStatusCode(HttpStatusCode.Accepted)
                       .WithHeader("Location", statusUri));
            });
        }
コード例 #6
0
 public static Guid Schedule(this IJobScheduler scheduler, DateTime when, Func <JobExecutionContext, Task> handler, OverlapHandling overlapHandling = OverlapHandling.Allow)
 {
     return(scheduler.Schedule($"@once {when:O}", async(context) =>
     {
         await handler(context);
     }, overlapHandling));
 }
コード例 #7
0
        /// <summary>
        /// Schedule all of the recurring jobs.
        /// </summary>
        /// <param name="job"></param>
        public static void ScheduleJobs(IJobScheduler job)
        {
            //War prep started
            job.RecurringJob <WAR_Messages>("war1_prep_started", o => o.SendWarPrepStarted(1).Wait(), "0 0 7 * * ?");
            job.RecurringJob <WAR_Messages>("war2_prep_started", o => o.SendWarPrepStarted(2).Wait(), "0 0 13 * * ?");
            job.RecurringJob <WAR_Messages>("war3_prep_started", o => o.SendWarPrepStarted(3).Wait(), "0 0 19 * * ?");
            job.RecurringJob <WAR_Messages>("war4_prep_started", o => o.SendWarPrepStarted(4).Wait(), "0 0 1 * * ?");

            //War Prep Ending
            job.RecurringJob <WAR_Messages>("war1_prep_ending", o => o.SendWarPrepEnding(1).Wait(), "0 45 8 * * ?");
            job.RecurringJob <WAR_Messages>("war2_prep_ending", o => o.SendWarPrepEnding(2).Wait(), "0 45 14 * * ?");
            job.RecurringJob <WAR_Messages>("war3_prep_ending", o => o.SendWarPrepEnding(3).Wait(), "0 45 20 * * ?");
            job.RecurringJob <WAR_Messages>("war4_prep_ending", o => o.SendWarPrepEnding(4).Wait(), "0 45 2 * * ?");

            //War Started
            job.RecurringJob <WAR_Messages>("war1_started", o => o.SendWarStarted(1).Wait(), "0 0 9 * * ?");
            job.RecurringJob <WAR_Messages>("war2_started", o => o.SendWarStarted(2).Wait(), "0 0 15 * * ?");
            job.RecurringJob <WAR_Messages>("war3_started", o => o.SendWarStarted(3).Wait(), "0 0 21 * * ?");
            job.RecurringJob <WAR_Messages>("war4_started", o => o.SendWarStarted(4).Wait(), "0 0 3 * * ?");

            //Process reactions queue
            job.RecurringJob_EveryNSeconds <WARBOT>("process_reactions", o => o.ProcessReactions(), 15);

            //Send Portal Started
            job.RecurringJob <WAR_Messages>("portal_opened", o => o.SendPortalOpened().Wait(), "0 0 9 ? * FRI");

            //Update the Discord bot list every two hours.
            job.RecurringJob <WARBOT>("update_dbl", o => o.TaskBot.Update_DiscordBotList().Wait(), "0 0 */2 * * ?");

            //Update WarBOT's status every minute.
            job.RecurringJob <WARBOT>("update_status", o => o.TaskBot.Update_Status(null).Wait(), "0 0/1 * * * ? *");
        }
コード例 #8
0
        public JobStatusModule(ILogger logger, IJobScheduler jobScheduler, IAppConfiguration configuration) : base("/jobstatus")
        {
            this.RequiresClaimsIfAuthorizationEnabled(configuration, claim => claim.Value.Equals("fabric/databus.queuejob", StringComparison.OrdinalIgnoreCase));

            Get("/", parameters =>
            {
                JobHistoryItem lastjob = jobScheduler.GetMostRecentJobs(1).FirstOrDefault();

                return(Negotiate
                       .WithModel(lastjob)
                       .WithView("ShowJobStatus"));
            });

            Get("/{jobName}", parameters =>
            {
                var jobName = parameters.jobName;
                if (Guid.TryParse(jobName, out Guid jobGuid))
                {
                    JobHistoryItem model = jobScheduler.GetJobStatus(jobGuid);

                    return(Negotiate
                           .WithModel(model)
                           .WithView("ShowJobStatus"));
                }

                return(jobScheduler.GetJobHistory(parameters.jobName));
            });
        }
コード例 #9
0
 /// <summary>
 /// Create client
 /// </summary>
 /// <param name="endpoints"></param>
 /// <param name="jobs"></param>
 /// <param name="serializer"></param>
 public PublisherJobClient(IEndpointRegistry endpoints, IJobScheduler jobs,
                           IJobSerializer serializer)
 {
     _serializer = serializer ?? throw new ArgumentNullException(nameof(serializer));
     _endpoints  = endpoints ?? throw new ArgumentNullException(nameof(endpoints));
     _jobs       = jobs ?? throw new ArgumentNullException(nameof(jobs));
 }
コード例 #10
0
 public ScheduleController(
     IScheduleReader reader,
     IJobScheduler scheduler)
 {
     _reader    = reader;
     _scheduler = scheduler;
 }
コード例 #11
0
 public static Guid Schedule(this IJobScheduler scheduler, DateTime when, Func <Task> handler, OverlapHandling overlapHandling = OverlapHandling.Allow)
 {
     return(scheduler.Schedule(when, async(context) =>
     {
         await handler();
     }, overlapHandling));
 }
コード例 #12
0
        private void CreateScheduler()
        {
            lock (_startup)
            {
                if (_consumer != null)
                {
                    return;
                }
                _container = new JobSchedulerContainer(container =>
                                                       container.Register(() => _timeFactory, LifeStyles.Singleton));
                _scheduler = _container.CreateJobScheduler();
                _scheduler.Start();

                _consumerContainer = new SchedulerContainer();
                _consumerScheduler = _consumerContainer.CreateTaskScheduler();
                _taskFactory       = _consumerContainer.CreateTaskFactory(_consumerScheduler);

                _taskFactory = _consumerContainer.CreateTaskFactory(_consumerScheduler);
                _taskFactory.Scheduler.Configuration.MaximumThreads            = _configuration.ThreadsMax;
                _taskFactory.Scheduler.Configuration.MaxQueueSize              = _configuration.QueueMax;
                _taskFactory.Scheduler.Configuration.WaitForThreadPoolToFinish =
                    _configuration.WaitForThreadPoolToFinish;
                _taskFactory.Scheduler.Start();
                _queueContainer = new QueueContainer <MemoryMessageQueueInit>();
                _consumer       = _queueContainer.CreateConsumerMethodQueueScheduler(QueueName, Connection,
                                                                                     _taskFactory);
                _consumer.Start();
            }
        }
コード例 #13
0
 /// <summary>
 /// Create client
 /// </summary>
 /// <param name="endpoints"></param>
 /// <param name="jobs"></param>
 /// <param name="serializer"></param>
 /// <param name="config"></param>
 public PublisherJobService(IEndpointRegistry endpoints, IJobScheduler jobs,
                            IJobSerializer serializer, IPublishServicesConfig config)
 {
     _serializer = serializer ?? throw new ArgumentNullException(nameof(serializer));
     _endpoints  = endpoints ?? throw new ArgumentNullException(nameof(endpoints));
     _jobs       = jobs ?? throw new ArgumentNullException(nameof(jobs));
     _config     = config ?? throw new ArgumentNullException(nameof(config));
 }
コード例 #14
0
 public JobsController(IJobsRepo jobsRepo, IJobScheduler jobScheduler, ISendMessageToQueue sendMessageToQueue, IBuddiesRepo buddiesRepo, ITranslatorService translatorService)
 {
     _jobsRepo           = jobsRepo;
     _jobScheduler       = jobScheduler;
     _sendMessageToQueue = sendMessageToQueue;
     _buddiesRepo        = buddiesRepo;
     _translatorService  = translatorService;
 }
コード例 #15
0
 public ProcessAsyncEventsJobHandler(IAsyncEventWorker asyncEventWorker,
                                     IAsyncEventPipelineConfiguration asyncEventPipelineConfiguration,
                                     IJobScheduler jobScheduler)
 {
     this.asyncEventWorker = asyncEventWorker;
     this.asyncEventPipelineConfiguration = asyncEventPipelineConfiguration;
     this.jobScheduler = jobScheduler;
 }
コード例 #16
0
 public Handler(IJobScheduler jobScheduler, IDialogService dialogService, IAppContext context, ILogger logger, ContractResolver resolver)
 {
     _logger        = logger;
     _context       = context;
     _resolver      = resolver;
     _jobScheduler  = jobScheduler;
     _dialogService = dialogService;
 }
コード例 #17
0
        public ProcessAsyncEventsJobHandlerTests()
        {
            asyncEventWorker = Substitute.For <IAsyncEventWorker>();
            jobScheduler     = Substitute.For <IJobScheduler>();
            asyncEventPipelineConfiguration = new AsyncEventPipelineConfiguration();

            sut = new ProcessAsyncEventsJobHandler(asyncEventWorker, asyncEventPipelineConfiguration, jobScheduler);
        }
コード例 #18
0
        public NextWeekOutputFormsJob(IJobScheduler jobScheduler, int weeksForward) : base(jobScheduler)
        {
            if (weeksForward < 1)
            {
                throw new IndexOutOfRangeException(nameof(weeksForward));
            }

            WeeksForward = weeksForward;
        }
コード例 #19
0
ファイル: Shutdown.cs プロジェクト: AnyStatus/AnyStatus
 public Handler(IMediator mediator, ISystemTray sysTray, IDispatcher dispatcher, ITelemetry telemetry, ILogger logger, IJobScheduler jobScheduler)
 {
     _logger       = logger;
     _sysTray      = sysTray;
     _mediator     = mediator;
     _telemetry    = telemetry;
     _dispatcher   = dispatcher;
     _jobScheduler = jobScheduler;
 }
コード例 #20
0
        public static Guid Schedule(this IJobScheduler scheduler, Action handler, OverlapHandling overlapHandling = OverlapHandling.Allow)
        {
            return(scheduler.Schedule((context) =>
            {
                handler();

                return Task.FromResult(0);
            }, overlapHandling));
        }
コード例 #21
0
ファイル: ChannelRuleService.cs プロジェクト: svsk/Vereesa
 public ChannelRuleService(DiscordSocketClient discord, IJobScheduler scheduler,
                           ChannelRuleSettings config)
     : base(discord)
 {
     _discord        = discord;
     _jobScheduler   = scheduler;
     _discord.Ready -= InitializeServiceAsync;
     _discord.Ready += InitializeServiceAsync;
 }
コード例 #22
0
        public async Task <IJobScheduler> GetJobScheduler()
        {
            if (this.jobScheduler == null)
            {
                this.jobScheduler = await JobSchedulerFactory.Create("Server=tcp:schedulemate.database.windows.net,1433;Initial Catalog=Schedulemate;Persist Security Info=False;User ID=mbaio;Password=9n43r8@t/@,9V=3W;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;", SchedulerDataStore.AzureSQL).ConfigureAwait(false);
            }

            return(this.jobScheduler);
        }
コード例 #23
0
        public static Guid Schedule(this IJobScheduler scheduler, DateTime when, Action <JobExecutionContext> handler, OverlapHandling overlapHandling = OverlapHandling.Allow)
        {
            return(scheduler.Schedule(when, (context) =>
            {
                handler(context);

                return Task.FromResult(0);
            }, overlapHandling));
        }
コード例 #24
0
        public NextModifiedYearJob(IJobScheduler jobScheduler, int yearsCount) : base(jobScheduler)
        {
            if (yearsCount < 1)
            {
                throw new IndexOutOfRangeException(nameof(yearsCount));
            }

            YearsCount = yearsCount;
        }
コード例 #25
0
 public GiveawayService(DiscordSocketClient discord, IRepository <Giveaway> giveawayRepo,
                        Random rng, IJobScheduler jobScheduler, ILogger <GiveawayService> logger)
     : base(discord)
 {
     _giveawayRepo = giveawayRepo;
     _rng          = rng;
     _jobScheduler = jobScheduler;
     _logger       = logger;
 }
コード例 #26
0
ファイル: CommandScheduler.cs プロジェクト: rareshb/EventFlow
 public CommandScheduler(
     IJobScheduler jobScheduler,
     ICommandDefinitionService commandDefinitionService,
     IJsonSerializer jsonSerializer)
 {
     _jobScheduler             = jobScheduler;
     _commandDefinitionService = commandDefinitionService;
     _jsonSerializer           = jsonSerializer;
 }
コード例 #27
0
        /// <summary>
        ///     Handles the Start event of the Application control.
        /// </summary>
        /// <param name="sender">The source of the event.</param>
        /// <param name="e">The <see cref="EventArgs"/> instance containing the event data.</param>
        protected void Application_Start(object sender, EventArgs e)
        {
            var modules =
                new IContainerModule[]
            {
                new AdContainerModule(),
                new CommonContainerModule(),
                new EnginesContainerModule(),
                new CommonPluginsContainerModule(),
                new PluginsContainerModule(),
                new RepositoryContainerModule(),
                new CoreContainerModule(),
                new QueryContainerModule(),
                new EnginesDslModule(),
                new InfrastructureContainerModule(),
                new UserInterfaceInfrastructureContainerModule(),
                new PackagesContainerModule(),
                new DbMigrationsModule(),
                new DbUpdateCommonModule(),
                new DbActionsModule(),
                new RequestHandlingModule(),
                new ReportContainerModule(),
                new RulesContainerModule(),
                new NotificationsContainerModule(),
                new WorkflowContainerModule(),
                new ScanWorkflowModule(),
                new SchedulerContainerModule(),
                new GitHubWorkflowContainerModule()
            };

            IoC.InitDefault(ReuseScope.PerRequest, modules);

            var globalContainer = IoC.GetContainer();

            var migrator = globalContainer.Resolve <IDbMigrator>();

            migrator.MigrationLatest();

            EnvironmentInitializer.Initialize(
                modules,
                ReuseScope.Container,
                container =>
            {
                var env = container.Resolve <IEnvironmentProvider>();

                env.Prepare();
            });

            _schedulerContainer = EnvironmentInitializer.InitializeContainer(modules, ReuseScope.Hierarchy);
            JobScheduler        = _schedulerContainer.Resolve <IJobScheduler>();
            JobScheduler.Start(true);

            AreaRegistration.RegisterAllAreas();
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);
        }
コード例 #28
0
        public NaosJobSchedulingEchoController(
            ILogger <NaosJobSchedulingEchoController> logger,
            IJobScheduler jobScheduler)
        {
            EnsureArg.IsNotNull(logger, nameof(logger));
            EnsureArg.IsNotNull(jobScheduler, nameof(jobScheduler));

            this.logger       = logger;
            this.jobScheduler = jobScheduler;
        }
コード例 #29
0
        public JobSchedulerHostedService(
            ILoggerFactory loggerFactory,
            IJobScheduler scheduler)
        {
            EnsureArg.IsNotNull(loggerFactory, nameof(loggerFactory));
            EnsureArg.IsNotNull(scheduler, nameof(scheduler));

            this.logger    = loggerFactory.CreateLogger <JobSchedulerHostedService>();
            this.scheduler = scheduler;
        }
コード例 #30
0
        public JobSchedulerTests()
        {
            _store       = Substitute.For <IBatchStore>();
            _dateService = Substitute.For <IDateService>();
            _scheduler   = new JobScheduler(_store, _dateService);

            _now = new DateTime(2018, 1, 2, 3, 4, 5);

            _dateService.GetNow().Returns(_now);
        }
コード例 #31
0
 public AsyncEventProcessor(Func <IAsyncEventWorker> asyncEventWorkerFunc,
                            IAsyncEventQueueManager asyncEventQueueManager,
                            IJobScheduler jobScheduler,
                            IAsyncEventPipelineConfiguration asyncEventPipelineConfiguration)
 {
     this.asyncEventWorkerFunc            = asyncEventWorkerFunc;
     this.asyncEventQueueManager          = asyncEventQueueManager;
     this.jobScheduler                    = jobScheduler;
     this.asyncEventPipelineConfiguration = asyncEventPipelineConfiguration;
 }
コード例 #32
0
ファイル: BuildMonitor.cs プロジェクト: Firebuild/Firebuild
        public BuildMonitor(IJobScheduler jobScheduler, ILog log)
        {
            if (jobScheduler == null)
            {
                throw new ArgumentNullException("jobScheduler");
            }
            if (log == null)
            {
                throw new ArgumentNullException("log");
            }

            this.jobScheduler = jobScheduler;
            this.log = log;
        }
コード例 #33
0
ファイル: JobManager.cs プロジェクト: kapitanov/diploma
        public JobManager(
            [Dependency]
            IJobScheduler scheduler)
        {
            this.scheduler = scheduler;
            var operationContext = OperationContext.Current;
            operationContext.GetCallbackChannel<Dto.IJobManagerCallback>();
            //var clientEndpoint = operationContext.IncomingMessageProperties[RemoteEndpointMessageProperty.Name]
            //                                  as RemoteEndpointMessageProperty;
            //remoteAddress = string.Format(
            //    "{0}:{1}",
            //    clientEndpoint.Address, clientEndpoint.Port);

            operationContext.Channel.Closed += OnChannelClosed;
            operationContext.Channel.Closing += OnChannelClosing;
        }
コード例 #34
0
ファイル: MonitoringUnit.cs プロジェクト: rahulgarg1985/CDMRS
 private void SetUpJobs()
 {
     var jobs = GetJobsForMu();
     _jobScheduler = new MonitoringJobScheduler();
     _jobScheduler.Initialize(jobs);
 }
コード例 #35
0
		public WinService(IJobScheduler jobScheduler)
		{
			InitializeComponent();
			_jobScheduler = DIHelper.VerifyParameter(jobScheduler);
		}