.net|.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,则创建数据库表。默认是trueDashboardJobListLimit = 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 * * ? " 每天凌晨一点执行阿里云OSSRecurringJob.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|.net core 基于Hangfire+Mysql持久化实现定时任务配置方法】到此这篇关于.net core 基于Hangfire+Mysql持久化实现定时任务的文章就介绍到这了,更多相关.net core Hangfire定时任务内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
推荐阅读
- 基于微信小程序带后端ssm接口小区物业管理平台设计
- 基于|基于 antd 风格的 element-table + pagination 的二次封装
- 基于爱,才会有“愿望”当“要求”。2017.8.12
- 关于Core|关于Core Image
- ASP.NET|ASP.NET Core应用开发思维导图
- javaweb|基于Servlet+jsp+mysql开发javaWeb学生成绩管理系统
- JavaScript|vue 基于axios封装request接口请求——request.js文件
- 韵达基于云原生的业务中台建设 | 实战派
- EasyOA|EasyOA 基于SSM的实现 未完成总结与自我批判
- 基于stm32智能风扇|基于stm32智能风扇_一款基于STM32的智能灭火机器人设计