.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