.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("连续任务!"));
也可以执行自己定义Job,其中Y.TestJob就是普通的类,里面定义好方法,没啥特别的。
RecurringJob.AddOrUpdate("Y.测试任务", e => e.SyncData(), Cron.Minutely, TimeZoneInfo.Local);
3、访问面板
https://localhost:7099/hangfire
Reference:
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