欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

.net core 基于Hangfire+Mysql持久化實(shí)現(xiàn)定時(shí)任務(wù)配置方法

 更新時(shí)間:2021年07月19日 11:57:52   作者:白將  
這篇文章主要介紹了.net core 基于Hangfire+Mysql持久化實(shí)現(xiàn)定時(shí)任務(wù)配置方法,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

1.negut引入hangfire相關(guān)包

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.自定義擴(kuò)展類

/// <summary>
    ///     任務(wù)調(diào)度
    /// </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)//此方法 只初次創(chuàng)建數(shù)據(jù)庫(kù)使用即可
                .UseSimpleAssemblyNameTypeSerializer()
                .UseRecommendedSerializerSettings()
                .UseStorage(new MySqlStorage(Appsettings.app("HangFire", "Connection"), new MySqlStorageOptions
                {
                    TransactionIsolationLevel =
                        (IsolationLevel?) System.Data.IsolationLevel.ReadCommitted, //事務(wù)隔離級(jí)別。默認(rèn)是讀取已提交
                    QueuePollInterval = TimeSpan.FromSeconds(15), //- 作業(yè)隊(duì)列輪詢間隔。默認(rèn)值為15秒。
                    JobExpirationCheckInterval = TimeSpan.FromHours(1),
                    CountersAggregateInterval = TimeSpan.FromMinutes(5),
                    PrepareSchemaIfNecessary = false, // 如果設(shè)置為true,則創(chuàng)建數(shù)據(jù)庫(kù)表。默認(rèn)是true
                    DashboardJobListLimit = 50000,
                    TransactionTimeout = TimeSpan.FromMinutes(1),
                    TablesPrefix = "Hangfire"
                })));
            services.AddHangfireServer();
        }
    }

4.在startupConfigureServices注入擴(kuò)展

   services.AddHangfireSetup();//任務(wù)調(diào)度

5.配置MIddleware

//任務(wù)調(diào)度中間件
    public static class HangfireMiddleware
    {
        public static void UseHangfireMiddleware(this IApplicationBuilder app)
        {
            if (app == null) throw new ArgumentNullException(nameof(app));
            app.UseHangfireServer(); //配置服務(wù)//ConfigureOptions()
            app.UseHangfireDashboard(Appsettings.app("HangFire", "pathMatch"), HfAuthor()); //配置面板
            //BackgroundJob.Enqueue(() => Console.WriteLine("Hello world from Hangfire!"));            
            HangfireService(); //配置各個(gè)任務(wù)
        }

        /// <summary>
        ///     配置賬號(hào)模板信息
        /// </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"), //可視化的登陸賬號(hào)
                            PasswordClear = Appsettings.app("HangFire", "PasswordClear") //可視化的密碼
                        }
                    }
                });
            return new DashboardOptions
            {
                Authorization = new[] {filter}
            };
        }

        /// <summary>
        ///     配置啟動(dòng)
        /// </summary>
        /// <returns></returns>
        public static BackgroundJobServerOptions ConfigureOptions()
        {
            return new()
            {
                Queues = new[] {"Job", nameof(HangfireConfigureQueue.picturetooss)}, //隊(duì)列名稱,只能為小寫
                WorkerCount = Environment.ProcessorCount * 5, //并發(fā)任務(wù)
                ServerName = "HangfireServer" //代表服務(wù)名稱
            };
        }

        #region 配置服務(wù)

        public static void HangfireService()
        {
            // "0 0 1 * * ? " 每天凌晨一點(diǎn)執(zhí)行阿里云OSS
            RecurringJob.AddOrUpdate<IOrderItemInfoService>(_ => _.JobOSS(), "0 0 1 * * ? ", TimeZoneInfo.Local,
                nameof(HangfireConfigureQueue.picturetooss));

            // "0 0 1 * * ? " 每天早上七點(diǎn)執(zhí)行定時(shí)任務(wù)更新匯率
            RecurringJob.AddOrUpdate<ICurrencyInfosService>(_ => _.UpdateRateByJob(), "0 0 7 * * ? ",
                TimeZoneInfo.Local, nameof(HangfireConfigureQueue.picturetooss));
        }

        #endregion
    }

6.startupConfigure配置使用中間件

 app.UseHangfireMiddleware();//Job

效果圖:

結(jié)語(yǔ):到此hangfire實(shí)現(xiàn)定時(shí)任務(wù)的配置已經(jīng)全部完成。

到此這篇關(guān)于.net core 基于Hangfire+Mysql持久化實(shí)現(xiàn)定時(shí)任務(wù)的文章就介紹到這了,更多相關(guān).net core Hangfire定時(shí)任務(wù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論