Sundial 是一个功能齐全的 .NET 分布式作业调度系统,适用于从小型应用到大型企业系统的各种项目。
https://www.toutiao.com/article/7532355815466910218
快速开始
可以通过以下命令安装 Sundial
dotnet add package Sundial
1. 定义作业任务
创建一个类并实现 IJob 接口,如下所示:
public classMyJob : IJob
{
privatereadonly ILogger _logger;
public MyJob(ILogger logger)
{
_logger = logger;
}
public Task ExecuteAsync(JobExecutingContext context, CancellationToken stoppingToken)
{
_logger.LogInformation(context.ToString());
return Task.CompletedTask;
}
}
2. 注册服务与任务
在 Startup.cs 文件中注册调度服务和任务:
builder.Services.AddSchedule(options =>
{
options.AddJob(Triggers.PeriodSeconds(5)); // 每 5 秒执行一次
// 或者使用 Cron 表达式:
// options.AddJob(Triggers.Cron(""));
});
3. 运行项目
启动项目后,你将在日志中看到类似以下输出:
info: SundialDemo.MyJob[0]
[C] 5s 1ts 2025-07-03 13:31:34.368 +08:00 -> 2025-07-03 13:31:39.422 +08:00
info: SundialDemo.MyJob[0]
[C] 5s 2ts 2025-07-03 13:31:39.422 +08:00 -> 2025-07-03 13:31:44.473 +08:00
info: SundialDemo.MyJob[0]
[C] 5s 3ts 2025-07-03 13:31:44.473 +08:00 -> 2025-07-03 13:31:49.488 +08:00
日志格式说明
JobExecutionContext 类重写了 ToString() 方法,输出两种格式的日志信息:
<作业Id> 作业描述 [并行C/串行S] <作业Id 触发器Id> 触发器字符串 触发器描述 触发次数ts 触发时间 -> 下一次触发时间
<作业Id> 作业描述 [并行C/串行S] <作业Id 触发器Id> 触发器字符串 触发器描述 触发次数ts 触发时间 [触发器终止状态]
·············· END ··············