.Net5 定时任务调度框架 Hangfire

值此元旦佳节,是个学习的好时间,啊哈哈哈,断断续续研究了一晚上,总结下吧 !

官网地址:https://www.hangfire.io/

1、NuGet安装包

Hangfire.AspNetCore

Hangfire.MemoryStorage

Hangfire.SqlServer

  其中Hangfire.MemoryStorageHangfire.SqlServer使用一个就行,看是否有持久性的需求吧

2、注册

ConfigureServices

 1  //持久性
 2  services.AddHangfire(x => x.UseStorage(new SqlServerStorage(
 3  @"Data Source =8V74DZJEG5ECJEYMSSQLSERVER19;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

原文地址:https://www.cnblogs.com/PrintY/p/14224495.html