开源的.NET定时任务组件Hangfire开发总结
Posted dotNET跨平台
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了开源的.NET定时任务组件Hangfire开发总结相关的知识,希望对你有一定的参考价值。
定时任务调度问题,是一个老生常谈的问题。网上有许多定时任务调度的解决方案,以前主要是使用Window计划和Window服务来做任务定时执行,然后就开始使用定时任务调度框架Quartz.Net。Hangfire这个自带后台任务调度面板,可以在后台手动执行任务的神奇的任务调度框架。
Hangfire是一个开源的.NET任务调度框架,提供了内置集成化的控制台,可以直观明了的查看作业调度情况,并且Hangfire不需要依赖于单独的应用程序执行(如:windows服务,window计划)。并且支持持久性存储。
最近在搞Hangfire任务,下面总结下几个设置
1、配置面板权限
var filter = new BasicAuthAuthorizationFilter(
new BasicAuthAuthorizationFilterOptions
SslRedirect = false,
RequireSsl = false,
LoginCaseSensitive = false,
Users = new[]
new BasicAuthAuthorizationUser
Login = System.Configuration.ConfigurationManager.AppSettings["user"],
PasswordClear = System.Configuration.ConfigurationManager.AppSettings["pwd"]
);
var options = new DashboardOptions
AuthorizationFilters = new[]
filter
;
app.UseHangfireDashboard("/hangfire", options);
2、已完成的job设置过期,防止数据无限增长
public class SucceededStateExpireHandler : IStateHandler
public TimeSpan JobExpirationTimeout;
public SucceededStateExpireHandler(int jobExpirationTimeout)
JobExpirationTimeout = TimeSpan.FromMinutes(jobExpirationTimeout);
public string StateName => SucceededState.StateName;
public void Apply(ApplyStateContext context, IWriteOnlyTransaction transaction)
context.JobExpirationTimeout = JobExpirationTimeout;
public void Unapply(ApplyStateContext context, IWriteOnlyTransaction transaction)
3、设置工作的线程数
app.UseHangfireServer(new BackgroundJobServerOptions WorkerCount = int.Parse(System.Configuration.ConfigurationManager.AppSettings["WorkerCount"]) );
4、添加BackgroundJob
try
BackgroundJob.Enqueue(() => CreateJob(info));
catch (Exception ex)
Logger.Default.Error("CreateJob失败 " + ex.ToString());
TextBuffer.WriteLine("Background job has been created.");
以上是关于开源的.NET定时任务组件Hangfire开发总结的主要内容,如果未能解决你的问题,请参考以下文章
Asp-Net-Core开发笔记:集成Hangfire实现异步任务队列和定时任务
C#/.NET/.NET Core应用程序编程中实现定时任务调度的方法或者组件有哪些,Timer,FluentScheduler,TaskScheduler,Gofer.NET,Coravel,Qua