.net core 基于Hangfire+Mysql持久化实现定时任务配置方法

这篇文章主要介绍了.net core 基于Hangfire+Mysql持久化实现定时任务配置方法,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

1.negut引入hangfire相关包

Hangfire.AspNetCore,Hangfire.Core,Hangfire.Dashboard.BasicAuthorization,Hangfire.MySqlStorage

2.Appsetting 配置hangfire资源

 "HangFire": { "Connection": "Server=127.0.0.1;uid=root;pwd=wakamysql666;database=Hangfire_DB;AllowLoadLocalInfile=true;Allow User Variables=True;", "pathMatch": "/hangfire", "Login": "login", "PasswordClear": "pwd" },

3.自定义扩展类

 ///  ///     任务调度 ///  public static class HangfireSetup { public static void AddHangfireSetup(this IServiceCollection services) { if (services == null) throw new ArgumentNullException(nameof(services)); if (services == null) throw new ArgumentNullException(nameof(services)); services.AddHangfire(configuration => configuration .SetDataCompatibilityLevel(CompatibilityLevel.Version_170)//此方法 只初次创建数据库使用即可 .UseSimpleAssemblyNameTypeSerializer() .UseRecommendedSerializerSettings() .UseStorage(new MySqlStorage(Appsettings.app("HangFire", "Connection"), new MySqlStorageOptions { TransactionIsolationLevel = (IsolationLevel?) System.Data.IsolationLevel.ReadCommitted, //事务隔离级别。默认是读取已提交 QueuePollInterval = TimeSpan.FromSeconds(15), //- 作业队列轮询间隔。默认值为15秒。 JobExpirationCheckInterval = TimeSpan.FromHours(1), CountersAggregateInterval = TimeSpan.FromMinutes(5), PrepareSchemaIfNecessary = false, // 如果设置为true,则创建数据库表。默认是true DashboardJobListLimit = 50000, TransactionTimeout = TimeSpan.FromMinutes(1), TablesPrefix = "Hangfire" }))); services.AddHangfireServer(); } }

4.在startupConfigureServices注入扩展

 services.AddHangfireSetup();//任务调度

5.配置MIddleware

 //任务调度中间件 public static class HangfireMiddleware { public static void UseHangfireMiddleware(this IApplicationBuilder app) { if (app == null) throw new ArgumentNullException(nameof(app)); app.UseHangfireServer(); //配置服务//ConfigureOptions() app.UseHangfireDashboard(Appsettings.app("HangFire", "pathMatch"), HfAuthor()); //配置面板 //BackgroundJob.Enqueue(() => Console.WriteLine("Hello world from Hangfire!")); HangfireService(); //配置各个任务 } ///  ///     配置账号模板信息 ///  ///  public static DashboardOptions HfAuthor() { var filter = new BasicAuthAuthorizationFilter( new BasicAuthAuthorizationFilterOptions { SslRedirect = false, RequireSsl = false, LoginCaseSensitive = false, Users = new[] { new BasicAuthAuthorizationUser { Login = Appsettings.app("HangFire", "Login"), //可视化的登陆账号 PasswordClear = Appsettings.app("HangFire", "PasswordClear") //可视化的密码 } } }); return new DashboardOptions { Authorization = new[] {filter} }; } ///  ///     配置启动 ///  ///  public static BackgroundJobServerOptions ConfigureOptions() { return new() { Queues = new[] {"Job", nameof(HangfireConfigureQueue.picturetooss)}, //队列名称,只能为小写 WorkerCount = Environment.ProcessorCount * 5, //并发任务 ServerName = "HangfireServer" //代表服务名称 }; } #region 配置服务 public static void HangfireService() { // "0 0 1 * * ? " 每天凌晨一点执行阿里云OSS RecurringJob.AddOrUpdate(_ => _.JobOSS(), "0 0 1 * * ? ", TimeZoneInfo.Local, nameof(HangfireConfigureQueue.picturetooss)); // "0 0 1 * * ? " 每天早上七点执行定时任务更新汇率 RecurringJob.AddOrUpdate(_ => _.UpdateRateByJob(), "0 0 7 * * ? ", TimeZoneInfo.Local, nameof(HangfireConfigureQueue.picturetooss)); } #endregion }

6.startupConfigure配置使用中间件

 app.UseHangfireMiddleware();//Job

效果图:

结语:到此hangfire实现定时任务的配置已经全部完成。

以上就是.net core 基于Hangfire+Mysql持久化实现定时任务配置方法的详细内容,更多请关注0133技术站其它相关文章!

赞(0) 打赏
未经允许不得转载:0133技术站首页 » ASP编程