基于 .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
作者名称:追逐时光者
作者简介:一个热爱编程、善于分享、喜欢学习、探索、尝试新事物和新技术的全栈软件工程师。
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接,否则保留追究法律责任的权利。如果该篇文章对您有帮助的话,可以点一下右下角的【♥推荐♥】,希望能够持续的为大家带来好的技术文章,文中可能存在描述不正确的地方,欢迎指正或补充,不胜感激。