c#怎么构建后台任务hangfire

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c#怎么构建后台任务hangfire相关的知识,希望对你有一定的参考价值。

参考技术A 方法一
代码如下:
document.getElementById("selectid").options.length = 0;

方法二
代码如下:
document.formName.selectName.options.length = 0;

方法三
代码如下:
document.getElementById("selectid").innerhtml = "本回答被提问者采纳

开源的.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.");

以上是关于c#怎么构建后台任务hangfire的主要内容,如果未能解决你的问题,请参考以下文章

hangfire+bootstrap ace 模板实现后台任务管理平台

后台任务hangfire

执行后台任务的利器

开源的.NET定时任务组件Hangfire开发总结

Hangfire入门(任务调度)

c# .net core使用Hangfire组件来管理自动定时任务,连接的是redis服务,现在问题是占用内存太大