Quartz基础使用

Quartz基本组成部分:

  • 调度器:Scheduler
  • 任务:JobDetail
  • 触发器:Trigger,包括SimpleTrigger和CronTrigger

.

 

 

using Quartz;
using Quartz.Impl;
using System;           
using System.Threading.Tasks;

namespace QuartzDemo1
{
    /// <summary>
    /// 我的任务
    /// </summary>
    class MyJob : IJob
    {
        public Task Execute(IJobExecutionContext context)
        {
            JobDataMap jobdata = context.JobDetail.JobDataMap;
            JobDataMap triggerdata= context.Trigger.JobDataMap;
            Console.WriteLine($"JobKey:{jobdata["JobKey"]},TriggerKey:{triggerdata["TriggerKey"]},{DateTime.Now.ToString()}");
            return Task.CompletedTask;
        }
    }
    class Program
    {
        static async Task Main(string[] args)
        {
            IScheduler scheduler;/*****************this's Scheduler********************/
            {
                //调度器工厂        
                StdSchedulerFactory factory = new StdSchedulerFactory();
                scheduler = await factory.GetScheduler();  //调度器  
            }
            IJobDetail job;  /*****************this's Ijob********************/
            {   
                //创建一个工作任务 ,myjob1是名称,mygroup1是组名。
                 job = JobBuilder.Create<MyJob>().WithIdentity("myjob1", "mygroup1")
                                               .UsingJobData("JobKey", "JobValue")     //传数据
                                                .Build();
                //..... 可以创建多个Job然后通过  group进行分组
                //例如:   有7个接口 A/B/C/O/X/Y/Z
                //ABC分别接收ABC类型订单(已确定执行时间一致)  每天06:00执行
                //XYZ分别发送XYZ订单(已确定执行时间一致)     每天12:00/22:00点
                //O接口定时清理数据                        每天23:00执行
                //则可以把 ABC分为  ABCGroup     XYZ分为XYZGroup   O单独分为Ogroup;
            }
            ITrigger trigger;  /*****************this's Itrigger********************/
            {
                //触发器
                trigger = TriggerBuilder.Create()
                           .WithIdentity("mytrigger1", "mygroup1") //定时器与JobGroup对应
                         //.WithCronSchedule("0/5 * * * * ?") //5秒执行一次     //同下 (定时)
                           .WithSimpleSchedule(x => x.WithIntervalInSeconds(5).RepeatForever())  //同上(定时)
                           .UsingJobData("TriggerKey", "TriggerValue")    //传数据
                           .Build();
            }
            //将任务与触发器添加到调度器中
            _ = scheduler.ScheduleJob(job, trigger);
            _ = scheduler.Start();
            Console.Read();   
        }
    }
}

 

posted @ 2021-03-16 11:57  后跳  阅读(75)  评论(0编辑  收藏  举报