.NET Core Quartz使用cron表达式实现定时任务

1、使用Nuget引入Quartz

1)可以在Nuget包管理器中搜索Quartz,找到Quartz点击安装

2)在Nuget包管理控制台使用下面命令安装引入

Install-Package Quartz

3)Quartz中使用的命名空间

using Quartz;  
using Quartz.Impl;

2、实现Quartz中的IJob接口

 [DisallowConcurrentExecutionAttribute]
    public >MessageJob : IJob
    {
        private static Logger logger = LogManager.GetCurrentClassLogger();
        public Task Execute(IJobExecutionContext context)
        {
            //Console.WriteLine("Info From HelloJob");
            //Thread.Sleep(30000);
            //LogHelper.WriteInfo("Info From HelloJob");
            return Task.Run(() =>
            {
                logger.Info("MessageJob Start");
                try
                {
                    
                    Utils.NotifyMsg();
                }
                catch (Exception ex)
                {
                    logger.Error(ex.Message);
                }
            });
        }
    }

3、配置和启动定时任务

namespace MyConsole
{
    >Program
    {
        static void Main(string[] args)
        {
            //创建一个作业调度池
            ISchedulerFactory schedf = new StdSchedulerFactory();
            IScheduler sched = schedf.GetScheduler().Result;
            //开始运行
            sched.Start();
            //创建出一个具体的作业
            IJobDetail job = JobBuilder.Create<MessageJob>().Build();            //配置一个触发器
                                                                                 //创建出一个具体的作业
            //创建触发器
            ITrigger trigger = TriggerBuilder.Create()
                .WithIdentity("trigger1", "group1")
                .StartNow()
                .WithCronSchedule("30 0/1 * * * ?")//每分钟的第30秒执行 //0 0/32 19-22 * * ?
                .Build();
            //加入作业调度池中
            sched.ScheduleJob(job, trigger).Wait();

        }
    }
}

4、cron表达式

从左到右分别为:秒 分 小时 月份中的日期 月份 星期中的日期 年份 (中间用空格隔开)。其中年份可空。

字段 允许值 允许的特殊字符

秒 0-59 , - * /
分 0-59 , - * /
小时 0-23 , - * /
日期 1-31 , - * ? / L W C
月份 1-12 , - * /
星期 1-7 , - * ? / L C #
年 (可选)留空, 1970-2099 , - * /

你可能感兴趣的