Hangfire重复作业-如何动态更改间隔



我有一个.NET web应用程序,它将Hangfire用于一些重复性作业。我想构建该功能,以便用户可以通过应用程序更改作业的间隔。但"更新"似乎不起作用。

我已将Startup.cs配置为在应用程序运行时启动作业:

public void Configuration(IAppBuilder app)
{
app.UseHangfireAspNet(GetHangfireServers);
//Admin user can view job dashboard
app.UseHangfireDashboard("/jobs", new DashboardOptions
{
Authorization = new[] { new JobsAuthorizationFilter() }
});
app.UseHangfireServer();

RecurringJob.AddOrUpdate("my-job-id", () => FileProcess.GetOrders(), interval); //interval is a parameter and its initial values is * * * * * which sets the job to run every minute
}

现在,在控制器中,当用户单击更新按钮时,将调用此方法。

public ActionResult JobUpdate(string newInterval)
{
var manager = new RecurringJobManager();
manager.  RecurringJob.AddOrUpdate("my-job-id", () => FileProcess.GetOrders(), newInterval);           
return new EmptyResult();
}

但这份工作似乎没有更新。我已经仔细检查了Hangfire.Hash表,这个作业的Cron值根本没有改变。

我也试过删除作业,然后再添加回来,也不起作用

public ActionResult JobUpdate(string newInterval)
{
var manager = new RecurringJobManager();
manager.RemoveIfExists("my-job-id");
manager.AddOrUpdate("my-job-id", () => FileProcess.GetOrders(), newInterval);   
manager.Trigger("my-job-id");
}    

我错过了什么?如何让用户设置和更新间隔?

事实证明,导致我的方法没有更新的问题是'Interval'参数。因为我使用缓存来缓存这个值,所以旧值只有在一定时间后才会过期。这就是为什么它没有更新。我删除了缓存,现在一切都正常了。

相关内容

  • 没有找到相关文章

最新更新