Hangfire 重复作业每 30 分钟运行一次,而它仍未完成



我使用Hangfire来运行大约需要2个小时的作业。我注意到,每30分钟就会有一次作业重新出现,而上一次作业仍在工作。所以,如果我有在特定时间开始的作业A,30分钟后,另一个作业A将开始运行,而前一个作业仍处于处理状态。

配置服务((:

services.AddHangfire(config => config
.UseSimpleAssemblyNameTypeSerializer()
.UseDefaultTypeSerializer()
.UseMemoryStorage());

services.AddHangfireServer();

Configure((:

app.UseHangfireDashboard();
RecurringJob.AddOrUpdate<ISender>(i => i.A(), Cron.Daily(8, 0), timeZone: TimeZoneInfo.Local);

我已经检查了运行的方法是否有错误、异常等,只是为了确保作业不会因此而重试。经过大量测试,我认为情况并非如此。

任何形式的帮助都将不胜感激

我不确定这是否正确,但它为我解决了问题。

它是由ConfigureServices((中的UseMemoryStorage((引起的。

传递以下示例中的选项将限制作业在默认情况下30分钟后再次出现,或选项中指示的任何内容。

var options = new MemoryStorageOptions
{
FetchNextJobTimeout = TimeSpan.FromHours(10)
};
services.AddHangfire(config => config.SetDataCompatibilityLevel(CompatibilityLevel.Version_170)
.UseSimpleAssemblyNameTypeSerializer()
.UseDefaultTypeSerializer()
.UseMemoryStorage(options));

最新更新