.net core 3.x hangfire定時任務+ sqlite 集成記錄

.net core 3.x 定時任務,用的sqlite數據庫,自己折騰了幾天,分享出來吧,自己下次用的時候找也方便。

 

1、依賴包:

  • hangfire (1.7.7)
  • hangfire.core(1.7.7)
  • hangfire.Sqlite (1.4.2)
  • Microsoft.EntityFrameworkCore.Sqlite(3.1.0)

2、Startup類配置

1、實現IDashboardAuthorizationFilter ,自己根據情況實現或百度

2、ConfigureServices(IServiceCollection services) 配置參考:

  var sqliteOptions = new SQLiteStorageOptions();
            SQLitePCL.Batteries.Init();
            services.AddHangfire(configuration => configuration
                .SetDataCompatibilityLevel(CompatibilityLevel.Version_170)
                .UseSimpleAssemblyNameTypeSerializer().UseRecommendedSerializerSettings()
                .UseLogProvider(new ColouredConsoleLogProvider())
                .UseSQLiteStorage("Data Source=./wg.db;", sqliteOptions)
            );

在項目根目錄增加wg.db ,記得;號一定要寫

3、 Configure(IApplicationBuilder app, IWebHostEnvironment env)  配置參考:

  var option = new BackgroundJobServerOptions { WorkerCount = 1 };
            app.UseHangfireServer(option);
            app.UseDeveloperExceptionPage();
            app.UseHangfireDashboard(options: new DashboardOptions { Authorization = new[] { new ClipsAuthorizeFilter() } })
               .UseCors(builder => builder.AllowAnyHeader());
            GlobalJobFilters.Filters.Add(new AutomaticRetryAttribute { Attempts = 0 });
            HangfireJobScheduler.ScheduleRecurringJobs();

4、HangfireJobScheduler類,定時規則代碼參考:

  RecurringJob.RemoveIfExists(nameof(ClipsJob));
            RecurringJob.AddOrUpdate<ClipsJob>(nameof(ClipsJob)
                , job => job.Run(JobCancellationToken.Null),
                Cron.MinuteInterval(1), TimeZoneInfo.Local);

5、定時任務程序類,參考:

  public void Run(IJobCancellationToken token)
        {
       
            {
                logger.LogWarning(" 開始採集信息");
                logger.LogWarning("結束採集“);
            }
         
        }

收工!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章