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 ··············

文档更新时间: 2025-07-31 07:23   作者:admin