.NET任务调度组件EasyQuartz

前言

平常项目中你会选择哪个任务调度组件那?是Quartz还是Hangfire,又或者是Coravel、ScheduleMaster、FluentScheduler那?

对于Quartz和Hangfire我都使用过,我知道他们都可以实现秒级别精度的调度并且都支持Cron,看板的话Hangfire自带有,Quartz的话第三方工具自带有,比如本文要介绍的东西:EasyQuartz.

该组件是朋友最新编写的一个组件,框架版本为长期支持版本.Net6.0,支持面板以及MySQL存储(其他存储方案留有扩展口),项目源码地址为:https://gitee.com/CRole/EasyQuartz

界面

想了解一个的东西,会先看到外表,找东西是这样子,找组件也是这样子

.NET任务调度组件EasyQuartz

可以看执行的记录

.NET任务调度组件EasyQuartz

对待执行的任务也可以立即执行

.NET任务调度组件EasyQuartz

对接步骤

安装nuget包

dotnet add package EasyQuartz

注入服务

 using EasyQuartz;
 public void ConfigureServices(IServiceCollection services)
 {
        //Add Service
        services.AddEasyQuartz();
 }

创建Job

第一种方式,通过特性指定Cron

[TriggerCron("0/1 * * * * ? *")]
public class Test1Job : IJob
{
    public Task Execute(IJobExecutionContext context)
    {
        Console.WriteLine($"{DateTime.Now}我是  Test1Job");
        return Task.CompletedTask;
    }
}

第二种方式,通过继承EasyQuartzJob 来指定Cron

public class Test2Job : EasyQuartzJob, IJob
{
    private readonly IConfiguration _configuration;

    public Test2Job(IConfiguration configuration)
    {
        _configuration = configuration;
    }

    public override string Cron => _configuration["Test2JobCron"];

    public Task Execute(IJobExecutionContext context)
    {
        Console.WriteLine($"{DateTime.Now}我是  Test2Job");
        return Task.CompletedTask;
    }
}

数据持久化和控制面板

需要引入包 EasyQuartzStorage.MySql 和 EasyQuartz.Dashboard

 using EasyQuartz;
 builder.Services.AddEasyQuartz(e =>
 {
  e.UseMySql(m => { m.ConnectionString = "server=XXX;user=root;database='XXX';port=3306;password=XXX;SslMode=None"; });
  e.UseDashboard();
 });

默认通过 http://ip:端口号/easyjob 访问

总结

欢迎各位试用体验。