コード例 #1
0
        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;
        }
コード例 #3
0
        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);
                    }
                }
            }
        }
コード例 #4
0
        // 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();
        }
コード例 #5
0
 public QuartzController(IJobService jobService, IScheduleJob scheduleJob, ILogger <QuartzController> logger)
 {
     _logger      = logger;
     _jobService  = jobService;
     _scheduleJob = scheduleJob;
 }
コード例 #6
0
 public MonitorController(IJobService jobService, IScheduleJob scheduleJob, ILogger <MonitorController> logger)
 {
     _jobService  = jobService;
     _scheduleJob = scheduleJob;
     _logger      = logger;
 }
コード例 #7
0
 /// <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;
 }