.NET Core 2.2使用最新版的Quartz.Net3.0.7 入门教程

Quartz是什么?官网:http://www.quartz-scheduler.org

Quartz 是一个完全由 Java 编写的开源作业调度框架,为在 Java 应用程序中进行作业调度提供了简单却强大的机制。

Quartz 可以与 J2EE 与 J2SE 应用程序相结合也可以单独使用。

Quartz 允许程序开发人员根据时间的间隔来调度作业。

Quartz 实现了作业和触发器的多对多的关系,还能把多个作业与不同的触发器关联

Quartz.Net 是Quartz 的net实现 ,github:https://github.com/quartznet/quartznet

在项目的开发过程中,难免会遇见后需要后台处理的任务,例如定时发送邮件通知、后台处理耗时的数据处理等,这个时候你就需要Quartz.Net了。

Quartz.Net是纯净的,它是一个.Net程序集,是非常流行的Java作业调度系统Quartz的C#实现。

Quartz.Net一款功能齐全的任务调度系统,从小型应用到大型企业级系统都能适用。功能齐全体现在触发器的多样性上面,即支持简单的定时器,也支持Cron表达式;即能执行重复的作业任务,也支持指定例外的日历;任务也可以是多样性的,只要继承IJob接口即可。

对于小型应用,Quartz.Net可以集成到你的系统中,对于企业级系统,它提供了Routing支持,提供了Group来组织和管理任务,此外还有持久化、插件功能、负载均衡和故障迁移等满足不同应用场景的需要。

实例:

打开vs2017新建一个core的控制台项目,

.NET Core 2.2使用最新版的Quartz.Net3.0.7 入门教程

 

 

 检查这个core版本是不是2.2,如果不是,可以去https://dotnet.microsoft.com/download/visual-studio-sdks?utm_source=getdotnetsdk&utm_medium=referral

.NET Core 2.2使用最新版的Quartz.Net3.0.7 入门教程

 

 

 

我们先引用Quartz.Net 程序包:

.NET Core 2.2使用最新版的Quartz.Net3.0.7 入门教程

 

 来创建一个Job类HelloQuartzJob:

    public class HelloQuartzJob : IJob
    {
        public Task Execute(IJobExecutionContext context)
        {
            return Task.Factory.StartNew(() =>
            {
                Console.WriteLine("Hello Quartz.Net");
            });
        }
    }

然后在Program.cs里面写这个调度:

static async Task MainAsync()
{
    var schedulerFactory = new StdSchedulerFactory();
    var scheduler = await schedulerFactory.GetScheduler();
    await scheduler.Start();
    Console.WriteLine($"任务调度器已启动");

    //创建作业和触发器
    var jobDetail = JobBuilder.Create<HelloQuartzJob>().Build();
    var trigger = TriggerBuilder.Create()
                                .WithSimpleSchedule(m => {
                                    m.WithRepeatCount(3).WithIntervalInSeconds(1);
                                })
                                .Build();

    //添加调度
    await scheduler.ScheduleJob(jobDetail, trigger);
}

Main需要改一下

        static async Task Main(string[] args)
        {
            Console.WriteLine("Hello World!");
           
            await MainAsync();
            Console.ReadKey();

        }

这样运行会报错,打开项目属性,生成,高级,修改语言版本为c#7.1,或c#7.2,或c#7.3

.NET Core 2.2使用最新版的Quartz.Net3.0.7 入门教程

 

 

修改之后,没有错误,运行成功:

.NET Core 2.2使用最新版的Quartz.Net3.0.7 入门教程

 

上一篇:Quartz(一)


下一篇:.NET Core 控制台应用程序使用异步(Async)Main方法