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的基本使用。

 

才疏學淺,相關文檔等僅供自我總結,如有相關問題可留言交流謝謝。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM