基于 .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支持💖。

优秀项目和框架精选

该项目已收录到C#/.NET/.NET Core优秀项目和框架精选中,关注优秀项目和框架精选能让你及时了解C#、.NET和.NET Core领域的最新动态和最佳实践,提高开发工作效率和质量。坑已挖,欢迎大家踊跃提交PR推荐或自荐(让优秀的项目和框架不被埋没🤞 )。