NCronJob 开源项目使用教程
1. 项目介绍
NCronJob 是一个基于 .NET 的作业调度器,它构建在 IHostedService
之上。该项目旨在填补 BackgroundService
和复杂调度器(如 Hangfire 或 Quartz)之间的空白,提供一个简单易用的作业调度解决方案。NCronJob 支持使用 cron 表达式调度周期性作业,以及立即执行的一次性作业。它不需要设置数据库,可以直接在任何 .NET 应用程序中使用。
2. 项目快速启动
安装 NCronJob
首先,通过 NuGet 安装 NCronJob:
dotnet add package LinkDotNet.NCronJob
定义一个简单的作业
创建一个实现 IJob
接口的作业类:
using NCronJob;
using Microsoft.Extensions.Logging;
public class PrintHelloWorld : IJob
{
private readonly ILogger<PrintHelloWorld> _logger;
public PrintHelloWorld(ILogger<PrintHelloWorld> logger)
{
_logger = logger;
}
public Task RunAsync(JobExecutionContext context, CancellationToken token)
{
_logger.LogInformation("Hello World");
_logger.LogInformation("Parameter: {Parameter}", context.Parameter);
return Task.CompletedTask;
}
}
注册作业
在 Program.cs
中注册 NCronJob 和作业:
using NCronJob;
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddNCronJob();
builder.Services.AddCronJob<PrintHelloWorld>(options =>
{
options.CronExpression = "* * * * *"; // 每分钟执行一次
options.Parameter = "Hello World"; // 可选参数
});
var app = builder.Build();
app.Run();
运行应用程序
运行你的应用程序,作业将按照定义的 cron 表达式执行。
3. 应用案例和最佳实践
应用案例
- 定时任务:例如,每天凌晨清理数据库中的过期数据。
- 即时任务:例如,用户提交表单后立即发送通知邮件。
- 依赖任务:例如,数据导入完成后自动进行数据转换。
最佳实践
- 参数化作业:利用作业的参数功能,使作业更加灵活和可配置。
- 错误处理:在作业中添加错误处理逻辑,确保作业失败时能够记录日志或通知管理员。
- 作业依赖:使用作业依赖功能,确保任务按照正确的顺序执行。
4. 典型生态项目
- Hangfire:一个功能强大的后台任务处理库,支持持久化作业和复杂的调度逻辑。
- Quartz.NET:一个功能丰富的作业调度库,支持复杂的调度需求和作业持久化。
- BackgroundService:.NET 内置的后台服务基类,适合简单的后台任务处理。
NCronJob 适合那些需要简单调度功能,但又不想引入复杂配置和数据库依赖的项目。通过结合这些生态项目,可以根据具体需求选择最合适的调度解决方案。