.Net Core定时任务 Hangfire 和 Quartz 2大框架的基本使用
起因
公司刚转型Core 要做定时任务监听FTP服务器文件,读取存入数据库,百度一大堆Quartz 和 Hangfire 没有一个注入服务的事例
千篇一律的Copy,让我这个新手感觉厌恶。
找了2位大佬 JoyLing 和 DX 还有其他大佬的指点 总算搞出来自己满意的代码了
源码
本人写的一个.Net Core 和 Angular的框架 事例都会在里面展现
后台:https://github.com/HDONGDeveloper/BasisSoa
前端:https://github.com/HDONGDeveloper/BasisSoa-Alain
定时器 Hangfire 1.6.21(最低1分钟任务起步)
这个框架配置简单 而且自带界面给人感觉非常舒服直接看代码吧
首先基本流程
在 Statup =》 ConfigureServices 加入 services.AddHangfire(r => r.UseSqlServerStorage(数据库连接字符串)); //因为Hangfire 的图形化界面需要数据表的支撑 在 Statup =》 Configure 加入 //定时任务 var jobOption = new BackgroundJobServerOptions { WorkerCount = 5//并发数 }; app.UseHangfireServer(jobOption); app.UseHangfireDashboard();
然后就是加入执行计划 很多朋友如果用 Hangfire 把计划任务放在 Controllers控制器的话 可能会造成服务器必须开启 ip/hangfire页面 才能执行计划
对于这个问题 我们用BackgroundService
namespace BasisSoa.Api.Hangfire { public class HangfireService : BackgroundService { ISysLogService sysLogService; //这是我测试能否注入我的Service层 public HangfireService(ISysLogService _sysLogService) { sysLogService = _sysLogService; } public override