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

Hangfire Recurring job runs every 30 minutes while it's still unfinished

我正在使用 Hangfire 来完成 运行 大约需要 2 小时的作业。我注意到每 30 分钟作业重新发生一次,而前一个作业仍在工作。因此,如果我有一个在特定时间开始的作业 A,则在 30 分钟后,另一个作业 A 将开始 运行ning,而前一个作业仍处于处理状态。

配置服务():

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



        services.AddHangfireServer();

配置():

app.UseHangfireDashboard();

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

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

如有任何帮助,我们将不胜感激

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

这是由 UseMemoryStorage()ConfigureServices() 中引起的。

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

var options = new MemoryStorageOptions
{
    FetchNextJobTimeout = TimeSpan.FromHours(10)
};

services.AddHangfire(config => config.SetDataCompatibilityLevel(CompatibilityLevel.Version_170)
  .UseSimpleAssemblyNameTypeSerializer()
  .UseDefaultTypeSerializer()
  .UseMemoryStorage(options));