.Net5 定时任务调度框架 Hangfire
值此元旦佳节,是个学习的好时间,啊哈哈哈,断断续续研究了一晚上,总结下吧 !
1、NuGet安装包
Hangfire.AspNetCore
Hangfire.MemoryStorage
Hangfire.SqlServer
其中Hangfire.MemoryStorage和Hangfire.SqlServer使用一个就行,看是否有持久性的需求吧
2、注册
ConfigureServices中
1 //持久性 2 services.AddHangfire(x => x.UseStorage(new SqlServerStorage( 3 @"Data Source =8V74DZJEG5ECJEY\MSSQLSERVER19;Initial Catalog = Y.Book; User ID = sa;Password =123456;", 4 new SqlServerStorageOptions 5 { 6 // 7 QueuePollInterval = TimeSpan.FromSeconds(15),//- 作业队列轮询间隔。默认值为15秒。 8 JobExpirationCheckInterval = TimeSpan.FromHours(1),//- 作业到期检查间隔(管理过期记录)。默认值为1小时。 9 CountersAggregateInterval = TimeSpan.FromMinutes(5),//- 聚合计数器的间隔。默认为5分钟。 10 PrepareSchemaIfNecessary = true,//- 如果设置为true,则创建数据库表。默认是true。 11 DashboardJobListLimit = 50000,//- 仪表板作业列表限制。默认值为50000。 12 TransactionTimeout = TimeSpan.FromMinutes(1),//- 交易超时。默认为1分钟。 13 } 14 ))); 15 16 //Hangfire非持久性 17 //services.AddHangfire(x => x.UseStorage(new MemoryStorage()));
Configure中
1 //Hangfire图形可视化面板 2 app.UseHangfireServer(); 3 app.UseHangfireDashboard();
3、使用
Configure中键入实现代码,其中ReportService为业务实现类,Daily为具体方法,然后设置每分钟执行一次,此处支持CRON表达式,如果之前接触过.net quartz那应该比较熟悉这个表达式了。
1 RecurringJob.AddOrUpdate<Service.ReportService>("报表", e => e.Daily(), Cron.Minutely());
运行界面如下图所示:
感谢:https://www.cnblogs.com/xishuai/p/asp-net-core-hangfire.html
https://www.cnblogs.com/linezero/p/hangfire.html
https://blog.csdn.net/weixin_43925876/article/details/89257885