文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

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

2023-06-20 16:33

关注

本篇内容主要讲解“.net core基于Hangfire+Mysql持久化怎么实现定时任务配置”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“.net core基于Hangfire+Mysql持久化怎么实现定时任务配置”吧!

1.negut引入hangfire相关包

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

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

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.自定义扩展类

/// <summary>    ///     任务调度    /// </summary>    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();//任务调度

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

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(); //配置各个任务        }        /// <summary>        ///     配置账号模板信息        /// </summary>        /// <returns></returns>        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}            };        }        /// <summary>        ///     配置启动        /// </summary>        /// <returns></returns>        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<IOrderItemInfoService>(_ => _.JobOSS(), "0 0 1 * * ? ", TimeZoneInfo.Local,                nameof(HangfireConfigureQueue.picturetooss));            // "0 0 1 * * ? " 每天早上七点执行定时任务更新汇率            RecurringJob.AddOrUpdate<ICurrencyInfosService>(_ => _.UpdateRateByJob(), "0 0 7 * * ? ",                TimeZoneInfo.Local, nameof(HangfireConfigureQueue.picturetooss));        }        #endregion    }

6.startupConfigure配置使用中间件

 app.UseHangfireMiddleware();//Job

效果图:

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

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

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

到此,相信大家对“.net core基于Hangfire+Mysql持久化怎么实现定时任务配置”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯