FluentScheduler定时任务的基本使用

Posted 乾坤容我静,万物任他行

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了FluentScheduler定时任务的基本使用相关的知识,希望对你有一定的参考价值。

 本文实例环境及版本 .NetCore3.1

 FluentScheduler 是 .Net 下,可以让你轻松实现定时任务的工具,配置灵活。

Github地址:https://github.com/fluentscheduler/FluentScheduler

文档地址:https://fluentscheduler.github.io/

1、Nuget添加FluentScheduler

2、 新建FluentSchedulerSetup类

 public static class FluentSchedulerSetup
    
        /// <summary>
        /// FluentScheduler 配置启动
        /// </summary>
        /// <param name="services"></param>
        public static void AddFluentSchedulerSetup(this IServiceCollection services)
        
            //扫描当前程序集中实现了Registry的类
            var registrys = Assembly.GetExecutingAssembly().GetTypes()
                                   .Where(t => !t.IsInterface && !t.IsSealed && !t.IsAbstract && typeof(Registry).IsAssignableFrom(t))
                                   .Select(s => s.Assembly.CreateInstance(s.FullName) as Registry)?.ToArray();

            // 注册同步服务
            JobManager.Initialize(registrys);
        
    

3、在Startup->ConfigureServices中添加

services.AddFluentSchedulerSetup();

 4、新建FileStateAsyncJobRegistry类继承自 Registry

 public class FileStateAsyncJobRegistry : Registry
    
        public FileStateAsyncJobRegistry()
        
            //不允许重复执行(意思就是每一次任务都必须执行完成后,才能开启下一次执行,防止并发执行带来的问题。)
            NonReentrantAsDefault();
            //每隔10秒执行一次
            Schedule<FileStateAsyncJob>().ToRunNow().AndEvery(10).Seconds();
            //定时任务在凌晨00.01开始执行一次
            //Schedule<FileStateAsyncJob>().ToRunEvery(1).Days().At(00, 01); 26574128

            // 延迟一个指定时间间隔执行一次计划任务。(当然,这个间隔依然可以是秒、分、时、天、月、年等。)
            Schedule<FileStateAsyncJob>().ToRunOnceIn(5).Seconds();

            // 在一个指定时间执行计划任务(最常用。这里是在每天的下午 1:10 分执行)
            Schedule(() => Trace.WriteLine("It\'s 1:10 PM now.")).ToRunEvery(1).Days().At(13, 10);

            // 立即执行一个在每月的星期一 3:00 的计划任务(可以看出来这个一个比较复杂点的时间,它意思是它也能做到!)
            Schedule<FileStateAsyncJob>().ToRunNow().AndEvery(1).Months().OnTheFirst(DayOfWeek.Monday).At(3, 0);

            // 在同一个计划中执行两个(多个)任务
            Schedule<FileStateAsyncJob>().AndThen<FileStateAsyncJob>().ToRunNow().AndEvery(5).Minutes();

        

    

    /// <summary>
    /// 需要执行的job
    /// </summary>
    public class FileStateAsyncJob : IJob
    
        //public readonly string path = Appsettings.app("AppSettings", "IPath");
        void IJob.Execute()
        
            Console.WriteLine("执行了一次0",DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
            //#region 此处为我业务代码 替换成你的即可
            //var task = Task.Run(async () =>
            //
            //    await SearchEsCommon.UpdateClassSortAsync(path);
            //);
            //#endregion
        

    

 

至此完成FluentScheduler的基本使用。

 

才疏学浅,相关文档等仅供自我总结,如有相关问题可留言交流谢谢。

 

以上是关于FluentScheduler定时任务的基本使用的主要内容,如果未能解决你的问题,请参考以下文章

FluentScheduler定时器计划任务

FluentScheduler定时器计划任务

FluentScheduler定时器计划任务

FluentScheduler——轻量级定时任务调度

定时任务FluentScheduler

C#定时任务的偷懒实现