基于 .NET 開源、功能齊全的分布式作業調度系統
前言
在當今企業級應用開發中,可靠的任務調度系統已成為支撐業務連續性的關鍵基礎設施。今天大姚給大家分享一個基于 .NET 開源、功能齊全的分布式作業調度系統:Sundial。
系統介紹
Sundial 是一個基于 .NET 開源(MIT License)、功能齊全的分布式作業調度系統,它可從最小的應用程序到大型企業系統使用。

創建 .NET 9 Web API
首先我們創建一個名為:SundialExercises .NET 9 控制臺應用:



引入 Sundial NuGet 包
在 NuGet 包管理器中搜索:Sundial 進行安裝。

自定義任務
創建自定義任務 CustomJob 并實現 IJob 接口:
public class CustomJob : IJob { private readonly ILogger<CustomJob> _logger; public CustomJob(ILogger<CustomJob> logger) { _logger = logger; } public Task ExecuteAsync(JobExecutingContext context, CancellationToken stoppingToken) { _logger.LogInformation(context.ToString()); Console.WriteLine($"[{DateTime.Now:HH:mm:ss}] 任務執行中..."); return Task.CompletedTask; } }
注冊 Sundial 作業并配置觸發器
在 Program.cs 中注冊 Sundial 作業并配置觸發器:
// 注冊 Sundial 作業并配置觸發器 builder.Services.AddSchedule(options => { // 添加自定義任務(每5秒執行) //options.AddJob<CustomJob>(Triggers.PeriodSeconds(5)); // 添加自定義任務(每10秒執行) options.AddJob<CustomJob>(Triggers.PeriodSeconds(10)); //.NET Cron 表達式解析庫 TimeCrontab:https://gitee.com/dotnetchina/TimeCrontab //var crontab = Crontab.DailyAt(3); // 每天第 3 小時正(點) //var crontab = Crontab.WeeklyAt("WED"); // SUN(星期天),MON,TUE,WED,THU,FRI,SAT //var crontab = Crontab.YearlyAt(3); // 每年第 3,5,6 月 1 日零點正 //options.AddJob<CustomJob>(Triggers.Cron(crontab.ToString())); });

項目源碼地址
更多項目實用功能和特性歡迎前往項目開源地址查看??,別忘了給項目一個Star支持??。
- Gitee開源地址:https://gitee.com/dotnetchina/Sundial
- 本文示例源碼地址:https://github.com/YSGStudyHards/DotNetExercises/tree/master/SundialExercises
優秀項目和框架精選
該項目已收錄到C#/.NET/.NET Core優秀項目和框架精選中,關注優秀項目和框架精選能讓你及時了解C#、.NET和.NET Core領域的最新動態和最佳實踐,提高開發工作效率和質量。坑已挖,歡迎大家踴躍提交PR推薦或自薦(讓優秀的項目和框架不被埋沒??)。
- GitHub開源地址:https://github.com/YSGStudyHards/DotNetGuide/blob/main/docs/DotNet/DotNetProjectPicks.md
- Gitee開源地址:https://gitee.com/ysgdaydayup/DotNetGuide/blob/main/docs/DotNet/DotNetProjectPicks.md
作者名稱:追逐時光者
作者簡介:一個熱愛編程、善于分享、喜歡學習、探索、嘗試新事物和新技術的全棧軟件工程師。
本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文鏈接,否則保留追究法律責任的權利。如果該篇文章對您有幫助的話,可以點一下右下角的【♥推薦♥】,希望能夠持續的為大家帶來好的技術文章,文中可能存在描述不正確的地方,歡迎指正或補充,不勝感激。

浙公網安備 33010602011771號