.Net Core中使用Quartz.Net
一、介绍
Quartz.Net是根据Java的Quartz用C#改写而来,最新的版本是3.0.6,源码在https://github.com/quartznet/quartznet。主要作用是做一些周期性的工作,或者定时工作。比如每天凌晨2点对前一天的数据统计。
二、简单的案例
以WebApi项目举例,用VS脚手架功能新建WebApi项目。
public void ConfigureServices(IServiceCollection services) { services.AddMvc(); services.AddSingleton<ISchedulerFactory, StdSchedulerFactory>();//注册ISchedulerFactory的实例。 }
[Route("api/[controller]")] public class ValuesController : Controller { private readonly ISchedulerFactory _schedulerFactory; private IScheduler _scheduler; public ValuesController(ISchedulerFactory schedulerFactory) { this._schedulerFactory = schedulerFactory; } [HttpGet] public async Task<string[]> Get() {
//1、通过调度工厂获得调度器 _scheduler = await _schedulerFactory.GetScheduler();
//2、开启调度器 await _scheduler.Start(); //3、创建一个触发器 var trigger = TriggerBuilder.Create() .WithSimpleSchedule(x => x.WithIntervalInSeconds(2).RepeatForever())//每两秒执行一次 .Build(); //4、创建任务 var jobDetail = JobBuilder.Create<MyJob>() .WithIdentity("job", "group") .Build(); //5、将触发器和任务器绑定到调度器中 await _scheduler.ScheduleJob(jobDetail, trigger); return await Task.FromResult(new string[] { "value1", "value2" }); }
}
public class MyJob : IJob