基于 .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
基于 .NET 开源、功能齐全的分布式作业调度系统的更多相关文章
- 从游击队到正规军(三):基于Go的马蜂窝旅游网分布式IM系统技术实践
本文由马蜂窝技术团队电商交易基础平台研发工程师"Anti Walker"原创分享. 一.引言 即时通讯(IM)功能对于电商平台来说非常重要,特别是旅游电商. 从商品复杂性来看,一个 ...
- 基于nginx+xxl-job+springboot高可用分布式任务调度系统
技术.原理讲解: <分布式任务调度平台XXL-JOB--源码解析一:项目介绍> <分布式任务调度平台XXL-JOB--源码解析二:基于docker搭建admin调度中心和execut ...
- Python使用multiprocessing实现一个最简单的分布式作业调度系统
Python使用multiprocessing实现一个最简单的分布式作业调度系统介绍Python的multiprocessing模块不但支持多进程,其中managers子模块还支持把多进程分布到多台机 ...
- 基于Go的马蜂窝旅游网分布式IM系统技术实践
一.引言 即时通讯(IM)功能对于电商平台来说非常重要,特别是旅游电商. 从商品复杂性来看,一个旅游商品可能会包括用户在未来一段时间的衣.食.住.行等方方面面.从消费金额来看,往往单次消费额度较大.对 ...
- 利用开源架构ELK构建分布式日志系统
问题导读 1.ELK产生的背景?2.ELK的基本组成模块以及各个模块的作用?3.ELK的使用总计有哪些? 背景 日志,对每个系统来说,都是很重要,又很容易被忽视的部分.日志里记录了程序执行的关键信息, ...
- 推荐一款颜值逆天且功能齐全的开源Shell工具!
前言 以前在windows上一直使用的SSH工具是XShell,后来转到mac平台,XShell没有mac版本.所以之前一直在找一款颜值高,功能齐全的可以作为日常使用的Shell工具. 我知道mac下 ...
- 基于netty轻量的高性能分布式RPC服务框架forest<上篇>
工作几年,用过不不少RPC框架,也算是读过一些RPC源码.之前也撸过几次RPC框架,但是不断的被自己否定,最近终于又撸了一个,希望能够不断迭代出自己喜欢的样子. 顺便也记录一下撸RPC的过程,一来作为 ...
- 基于英特尔® 至强™ 处理器 E5 产品家族的多节点分布式内存系统上的 Caffe* 培训
原文链接 深度神经网络 (DNN) 培训属于计算密集型项目,需要在现代计算平台上花费数日或数周的时间方可完成. 在最近的一篇文章<基于英特尔® 至强™ E5 产品家族的单节点 Caffe 评分和 ...
- 基于netty轻量的高性能分布式RPC服务框架forest<下篇>
基于netty轻量的高性能分布式RPC服务框架forest<上篇> 文章已经简单介绍了forest的快速入门,本文旨在介绍forest用户指南. 基本介绍 Forest是一套基于java开 ...
- 艺萌文件上传下载及自动更新系统(基于networkComms开源TCP通信框架)
1.艺萌文件上传下载及自动更新系统,基于Winform技术,采用CS架构,开发工具为vs2010,.net2.0版本(可以很容易升级为3.5和4.0版本)开发语言c#. 本系统主要帮助客户学习基于TC ...
随机推荐
- 解决Mac IntellIJ Idea 卡顿问题,修改内存大小
我们在工作中,经常会遇到因为IntellIJ Idea内存不足而卡顿的问题,可以通过两种方法调整idea的内存大小.我的IDEA版本是2021.2. 第一种调整内存的方法是 Change Me ...
- Spring Ai 从Demo到搭建套壳项目(一)初识与实现与deepseek对话模式
前言 为什么说Java长青,主要是因为其生态圈完善,Spring又做了一款脚手架,把对接各个LLM厂商的sdk做了一遍,形成一系列的spring-ai-starter-** 的依赖. 目前为止版本去到 ...
- 使用HttpServletRequest获取POST提交的JSON
说明 一般用于拦截器中,重写preHandle方法中 代码如下 拦截器中 @Override public boolean preHandle(HttpServletRequest request, ...
- 微信小程序生成海报方案
前段时间因为业务需求,需要在微信小程序里分享海报,于是在网上找到了这个方案.此处主要是搬运了网上的内容,加上我自己融合的组件的下载内容.具体如下: 第一步:下载组件 下载组件:Painter 一款轻量 ...
- C#.Net筑基-优雅LINQ的查询艺术
Linq(Language Integrated Query,集成查询语言),顾名思义就是用来查询数据的一种语言(可以看作是一组功能.框架特性的集合).在.NETFramework3.5(大概2007 ...
- UFT 关于excel及datatable的处理
1. excel 2. datatable
- select下拉框运用
HTML <select class="form-control input-sm css_form_input" name="sjbhtgl.sjly" ...
- CF757G Can Bash Save the Day? (复健 Day 1)
先差分为 \(Q(r)-Q(l-1)\),\(Q(i)=\sum_{j=1}^{i} \operatorname{dis}(p_j, x)\). 树上在线路径优先考虑点分树,先想询问怎么做,我们记 \ ...
- C# 生成设置范围内的Double的随机数
/// <summary> /// 生成设置范围内的Double的随机数 /// eg:_random.NextDouble(1.5, 2.5) ...
- 如何把数据库中的多个关联字段快速生成思维导图(excel如何将内容快速生成思维导图)
本次记录绝对干货 一:要求 今天遇到的需求,又是一件费力的活,要求如下:数据库中有三个字段,分别是一级分类,二级分类,三级分类,三个字段是级别关系,三级分类一共有上百个,现要求用思维导图的方式展示出来 ...