本文内容介绍: 在.NET Core项目中,结合SQLServer和SQLSugar框架实现Hangfire定时任务调度。
什么是 Hangfire?
Hangfire 是一个 .NET 库,用于管理后台任务。它提供了一种简单的方法来执行长时间运行的任务,例如发送电子邮件,生成报表,处理消息队列等。与其他后台任务调度库不同的是,Hangfire 提供了一个可靠的机制,可以在任务失败时自动重试,以确保任务始终被执行。Hangfire 还提供了一个简单的 Web 界面,可以查看任务状态、执行历史和性能指标。
Hangfire 的主要优点包括:
- 简单易用。Hangfire 提供了一个简单的 API,让您可以快速地定义和执行后台任务。
- 可靠性高。Hangfire 提供了一种可靠的机制,可以在任务失败时自动重试,以确保任务始终被执行。
- 灵活性高。Hangfire 可以与多种存储后端集成,包括 SQL Server,Redis,MongoDB 等,可以满足不同应用程序的需求。
一.Hangfire配置
第一步:安装必要的NuGet包
我的项目是.Net Core6的版本,打开你的命令行窗口,导航到项目目录,并执行以下命令以安装所需的NuGet包:
这些包的作用如下:
- Hangfire:用于在后台执行任务的库。
- Hangfire.SqlServer:Hangfire的SQL Server存储功能。
- SqlSugar:一个简单的ORM库,用于操作数据库。
第二步:创建和配置你的应用程序
- 打开
Program.cs
文件:这是.NET 6 Minimal API的入口点。 - 配置Hangfire和SqlSugar:在
Program.cs
中,添加以下代码,以设置Hangfire和SqlSugar。
代码解释:
builder.Services.AddScoped<ISqlSugarClient>
:这段代码将SqlSugar的数据库上下文注册到依赖注入容器中,后续可以通过构造函数注入使用。GlobalConfiguration.Configuration.UseSqlServerStorage
:指定Hangfire存储使用SQL Server。此连接字符串应与SqlSugar的连接串一致。app.UseHangfireDashboard()
:启用Hangfire的仪表板,允许你通过Web界面查看和管理后台任务。RecurringJob.AddOrUpdate
:这个方法用于添加或更新一个定时任务。MyJobService
是定义的服务类,ExecuteTask
是要执行的方法。Cron.Hourly
:这是一个Cron表达式,指定该任务每小时运行一次。
第三步:访问Hangfire仪表板
- 运行你的应用程序:
- 打开浏览器,访问
http://localhost:5000/hangfire
(端口号视你的实际设置而定)。 - 在Hangfire仪表板上,你可以查看任务的状态,执行历史记录,以及手动触发任务等。
第四步:查看和调试任务输出
在控制台中,你将看到任务执行中,时间: <当前时间>
的输出,表示你的定时任务正在正常执行。这将每小时打印一次。
这样就在ASP.NET Core 中配置好了Hangfire定时调度基本框架。
我这里有一个简单的Hangfire实例,仅供参考!!!
二.Hangfire定时任务实例
定时发送邮件的完整流程
1. 安装必要的 NuGet 包
在你的 .NET 6 项目中,使用以下命令安装 Hangfire 和邮件发送所需的包:
2. 创建项目文件
以下是一个示例项目结构:
3. 在 Program.cs
中配置 Hangfire 和邮件服务
4. 创建 EmailService.cs
类来实现发送邮件的功能
5. 更新连接字符串
在 appsettings.json
文件中,添加连接字符串:
6. 运行应用
确保你已启动数据库并创建必要的 Hangfire 表。然后运行应用:
7. 访问 Hangfire Dashboard
打开浏览器,访问 http://localhost:5000/hangfire
以查看 Hangfire 仪表板,确认定时任务已成功添加。
可参考
https://easy-dotnet.com/pages/4e1237/#%E4%BB%80%E4%B9%88%E6%98%AF-hangfire
https://www.cnblogs.com/Can-daydayup/p/11610747.html