Hangfire定时任务

发布时间 2023-08-13 22:20:05作者: 想睡觉的小坤
 

Hangfire定时任务

一、  HangFire

1.  HangFire官方网址:

2.  HangFire 中文文档:

二、  下载NuGut包

 

1.  Hangfire是基础的包

2.  Hangfire.HttpJob 是仪表盘任务

三、  连接数据库

1.  CREATE DATABASE HangFireText  数据库创建数据表

2.  "ConnectionStrings": { "HangFire": "server=LAPTOP-TBKRP9BV;uid=sa;pwd=123456;database=HangFireText;TrustServerCertificate=True" }

配置连接数据库

生成的表

 

四、  配置HangFire

1. 

            var Config = builder.Configuration;

 

            builder.Services.AddHangfire(config => config

                .SetDataCompatibilityLevel(CompatibilityLevel.Version_170)

                .UseSimpleAssemblyNameTypeSerializer()

                .UseRecommendedSerializerSettings()

                .UseStorage(new SqlServerStorage(

                    Config["ConnectionStrings:HangFire"],

                    new SqlServerStorageOptions

                    {

                        CommandBatchMaxTimeout = TimeSpan.FromMinutes(5),    //命令批处理最大超时

                        SlidingInvisibilityTimeout = TimeSpan.FromMinutes(5),//滑动隐形超时

                        QueuePollInterval = TimeSpan.FromSeconds(15),        //队列轮询间隔

                        UseRecommendedIsolationLevel = true,                 //使用推荐隔离级别

                        UsePageLocksOnDequeue = true,                        //使用页面锁定取消排队

                        DisableGlobalLocks = true,                           //禁用全局锁

                    })).UseHangfireHttpJob());

2.  builder.Services.AddHangfireServer();

3.  创建仪表盘登录验证

app.UseHangfireDashboard("/Hangfire", new DashboardOptions

{

    Authorization = new[] {new BasicAuthAuthorizationFilter(new BasicAuthAuthorizationFilterOptions

    {

        RequireSsl =false,

        SslRedirect =false,

        LoginCaseSensitive = true,

        Users = new[]

        {

            //授权登录

            new BasicAuthAuthorizationUser

            {

                Login ="admin",

                PasswordClear = "123456",

            }

        }

    })}

});

 

app.UseRouting();

五、  仪表盘使用

1.启动swagger并复制路径

2.  更改后缀

 

 

3.  仪表盘页面

4. 

仪表盘核心功能,可以添加作业,周期性运行作业

通过cron表达式来给每一个作业添加周期

cron表达式网址 

六、  定时执行日志功能

1.  在项目中引用nlog日志

builder.Host.UseNLog();

2.  控制器中创建方法

3.  仪表盘新增日志任务

 

4.  运行日志方法

5.  查看运行效果