.NET6 Hangfire
.NET6 MVC项目(其它类型也可以),最简单的步骤运行hangfire,据说支持分布式,等回头再研究下。
1、NuGet安装包
2、Program.cs文件
services.AddHangfire(configura =>
{
configura.UseStorage(new MemoryStorage());
});
此处我未设置持久化,如果需要sqlserver设置,参考:https://www.cnblogs.com/PrintY/p/14224495.html
app.UseHangfireServer();
app.UseHangfireDashboard("/hangfire", new DashboardOptions()
{
//访问面板需要登录,此处也可以不设置
Authorization = new[]
{
new BasicAuthAuthorizationFilter(new BasicAuthAuthorizationFilterOptions
{
SslRedirect = false, // 是否将所有非SSL请求重定向到SSL URL
RequireSsl = false, // 需要SSL连接才能访问HangFire Dahsboard。强烈建议在使用基本身份验证时使用SSL
LoginCaseSensitive = false, //登录检查是否区分大小写
Users = new[] //配置登陆账号和密码
{
new BasicAuthAuthorizationUser
{
Login ="admin",
PasswordClear="123456"
}
}
})
}
});
支持的任务有很多类型,请参考以下,copy过来的。
//支持基于队列的任务处理:任务执行不是同步的,而是放到一个持久化队列中,以便马上把请求控制权返回给调用者。
var jobId = BackgroundJob.Enqueue(()=>WriteLog("队列任务执行了!"));
//延迟任务执行:不是马上调用方法,而是设定一个未来时间点再来执行,延迟作业仅执行一次
var jobId = BackgroundJob.Schedule(()=>WriteLog("一天后的延迟任务执行了!"),TimeSpan .FromDays(1));//一天后执行该任务
//循环任务执行:一行代码添加重复执行的任务,其内置了常见的时间循环模式,也可基于CRON表达式来设定复杂的模式。【用的比较的多】
RecurringJob.AddOrUpdate(()=>WriteLog("每分钟执行任务!"), Cron.Minutely); //注意最小单位是分钟
//延续性任务执行:类似于.NET中的Task,可以在第一个任务执行完之后紧接着再次执行另外的任务
BackgroundJob.ContinueWith(jobId,()=>WriteLog("连续任务!"));
//不调用方法,仅输出测试
RecurringJob.AddOrUpdate("每4时执行一次", () => Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff")), "0 0 */4 * * ?", TimeZoneInfo.Local);
也可以执行自己定义Job,其中Y.TestJob就是普通的类,里面定义好方法,没啥特别的。
RecurringJob.AddOrUpdate<Y.TestJob>("Y.测试任务", e => e.SyncData(), Cron.Minutely, TimeZoneInfo.Local);
3、访问面板
https://localhost:7099/hangfire
4、其它
我的这个是寄宿在windows系统的IIS中,那么就有个问题,IIS每天都会回收,就会导致不能按时触发调度任务,可能在程序再被唤醒的时候才能触发,所以记得设置IIS禁止自动回收。
至于如何设置禁止自动回收比较简单,可以看下我另外一个博客:https://www.cnblogs.com/PrintY/p/15848746.html
Reference:
https://www.cnblogs.com/PrintY/p/14224495.html
https://blog.csdn.net/qq_43369949/article/details/119486690
https://www.cnblogs.com/1175429393wljblog/p/13407506.html
https://blog.csdn.net/qq_38762313/article/details/100656731
https://www.cnblogs.com/memoyu/p/13955094.html