private static void Schedule(IScheduler sched, Type type, IConfiguration config) { IScheduleJob scheduleJob = (IScheduleJob)Activator.CreateInstance(type); // define the job and tie it IJobDetail job = JobBuilder.Create(type) .WithIdentity(type.Name) .Build(); sched.PauseJob(job.Key); String cron = config.GetSection($"Scheduler:Crons:{type.Name}").Value; // Update trigger if (String.IsNullOrEmpty(cron)) { Console.WriteLine(scheduleJob.ToString() + " pasued."); (scheduleJob.ToString() + " pasued.").Log(); } else { CronScheduleBuilder cronBuilder = CronScheduleBuilder.CronSchedule(cron); ICronTrigger cronTrigger = (ICronTrigger)TriggerBuilder.Create() .WithIdentity(type.Name + "Trigger") .WithSchedule(cronBuilder) .ForJob(job) .Build(); IReadOnlyCollection <ITrigger> triggers = sched.GetTriggersOfJob(job.Key).Result; ICronTrigger currentTrigger = triggers.FirstOrDefault(x => x.GetType().Equals(typeof(CronTriggerImpl))) as ICronTrigger; if (currentTrigger == null) { sched.ScheduleJob(job, cronTrigger); } else if (currentTrigger.CronExpressionString != cronTrigger.CronExpressionString) { sched.RescheduleJob(cronTrigger.Key, cronTrigger); } sched.ResumeJob(job.Key); Console.WriteLine(scheduleJob.ToString() + " scheduled: " + cronTrigger.CronExpressionString); (scheduleJob.ToString() + " scheduled: " + cronTrigger.CronExpressionString).Log(); try { scheduleJob.ResumeJob(); } catch (Exception ex) { Console.WriteLine(ex.ToString()); ex.Log(); } } }
/// <summary> /// Initializes a new instance of the ScheduleAdapterInboundHandler class /// </summary> public ScheduleAdapterInboundHandler(ScheduleAdapterConnection connection , MetadataLookup metadataLookup) : base(connection, metadataLookup) { uri = connection.ConnectionFactory.ConnectionUri.Uri; scheduleName = connection.ConnectionFactory.ConnectionUri.ScheduleName; action = string.Format("{0}/{1}#Event", ScheduleAdapter.SERVICENAMESPACE, scheduleName); job = Activator.CreateInstance(connection.ConnectionFactory.Adapter.JobType) as IScheduleJob; }
protected override void InitScheduler(IScheduler scheduler) { var jobs = GetJobAssemblies(); if (jobs != null && jobs.Count() > 0) { foreach (var jType in jobs) { IScheduleJob job = Activator.CreateInstance(jType) as IScheduleJob; if (job != null) { job.Register(scheduler); } } } }
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline. public void Configure(IApplicationBuilder app, IHostingEnvironment env) { app.ApplicationServices.GetService <IScheduler>(); IScheduleJob scheduler = app.ApplicationServices.GetService <IScheduleJob>(); scheduler.InitializeAllJobs(); if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } else { app.UseMiddleware <CustomExceptionMiddleware>(); } app.UseSwagger(); app.UseSwaggerUI(c => { c.SwaggerEndpoint("/swagger/v1.0/swagger.json", "Piri.Scheduler v1.0"); }); app.UseMvc().UseMvcWithDefaultRoute(); //Result<QuartzDto> result = Extension.QuartzServiceUtilities.StartJob<SimpleTestProcess>("0/1 * * * * ?", true).GetAwaiter().GetResult(); }
public QuartzController(IJobService jobService, IScheduleJob scheduleJob, ILogger <QuartzController> logger) { _logger = logger; _jobService = jobService; _scheduleJob = scheduleJob; }
public MonitorController(IJobService jobService, IScheduleJob scheduleJob, ILogger <MonitorController> logger) { _jobService = jobService; _scheduleJob = scheduleJob; _logger = logger; }
/// <summary> /// Checks Engine status for unexpected faults. Starts jobs if they are unexpectedly stopped. /// </summary> /// <param name="jobService"></param> /// <param name="scheduler"></param> /// <param name="logger"></param> public EngineStarter(IJobService jobService, IScheduleJob scheduler, ILogger <EngineStarter> logger) { _jobService = jobService; _scheduler = scheduler; _logger = logger; }