当前位置:网站首页>Using quartz under. Net core -- general properties and priority of triggers for [5] jobs and triggers

Using quartz under. Net core -- general properties and priority of triggers for [5] jobs and triggers

2022-04-23 17:11:00 Tomato Warrior

The knowledge points related to homework are over , The following will focus on learning triggers

1、 General properties of triggers :

All triggers have the following three properties

JobKey

The attribute represents , Trigger firing , Unique identification of the job that should be executed ( Operational key)

StartTimeUtc

Property indicates when the trigger's schedule first takes effect ( The value is DateTimeOffset object )

EndTimeUtc

Property indicates when the trigger's schedule is no longer valid

The following is a complete code demonstration

Startup.cs

        public void ConfigureServices(IServiceCollection services)
        {
            services.AddControllersWithViews();

            // Register scheduler factory 
            services.AddSingleton<ISchedulerFactory>(new StdSchedulerFactory());
        }

HomeController.cs

 

using Microsoft.AspNetCore.Mvc;
using Quartz;
using System;
using System.Threading.Tasks;

namespace QuartzLearn.Controllers
{
    public class HomeController : Controller
    {
        // Dispatcher factory 
        private readonly ISchedulerFactory _schedulerFactory;

        // Constructor injection 
        public HomeController(ISchedulerFactory schedulerFactory)
        {
            // Injection scheduler factory 
            _schedulerFactory = schedulerFactory;
        }

        public async Task<IActionResult> Index()
        {
            IScheduler scheduler = await _schedulerFactory.GetScheduler();

            await scheduler.Start();


            IJobDetail job = JobBuilder.Create<HelloJob>()
                .WithIdentity("job1", "jobGroup1")
                .UsingJobData("name", "zhangsan")
                .Build();

            // Trigger once in the next five minutes 
            ITrigger trigger = TriggerBuilder.Create()
             .WithIdentity("trigger1", "group1")
             .StartAt(DateBuilder.FutureDate(5, IntervalUnit.Minute))
             .EndAt(DateBuilder.DateOf(22, 0, 0))
             .Build();

            await scheduler.ScheduleJob(job, trigger);

            Console.WriteLine($" current time :{trigger.StartTimeUtc.DateTime}");
            Console.WriteLine($" First trigger start time : {trigger.StartTimeUtc.DateTime}");
            Console.WriteLine($" Trigger failure time : {trigger.EndTimeUtc?.DateTime}");
            Console.WriteLine($" Executed when triggered Job: {trigger.JobKey}");

            return View();
        }
    }

    [DisallowConcurrentExecution]
    [PersistJobDataAfterExecution]
    public class HelloJob : IJob
    {
        public string Name { private get; set; }
        public async Task Execute(IJobExecutionContext context)
        {
            await Console.Out.WriteLineAsync($"This is HelloJob {DateTime.Now}");
        }
    }
}

Execution results :

 

 

2、 The priority of the trigger :

The default value of trigger priority is 5

The priority is compared only if the trigger has the same trigger time . Plan in 10:59 The trigger triggered will always be planned in 11:00 Trigger before trigger .

Don't make too many presentations

 

版权声明
本文为[Tomato Warrior]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/04/202204230553457774.html