Hangfire Missed Jobs


We had been wondering how Hangfire handles recurring jobs that were not processed if our application was down. We found that Hangfire has a built-in feature to handle this scenario.

It’s MisfireHandling property of RecurringJobOptions class.

RecurringJob.AddOrUpdate<IHeartbeatClient>("Heartbeat",
    service => service.SendAsync(HeartbeatTypes.Hangfire), Cron.Hourly, 
      new RecurringJobOptions
       {
         MisfireHandling = MisfireHandlingMode.Ignorable,
       });

MisfireHandlingMode has three options:

  • Relaxed - Only a single job will be created, not matter how many times the schedule was missed.
  • Ignore - Ignore the misfire, don’t create any jobs and continue with the next schedule.
  • Strict - Creates a job for every missed occurrence.

The default value is Relaxed.