My requirement is to process only latest jobs and ignore older jobs. How do I configure that in Hangfire?
I have tried IApplyStateFilter for setting ExpirationAttribute
public class ExpirationAttribute : JobFilterAttribute, IApplyStateFilter
{
private int _hours;
public ExpirationAttribute(int hours)
{
_hours = hours;
}
public void OnStateUnapplied(ApplyStateContext context, IWriteOnlyTransaction transaction)
{
context.JobExpirationTimeout = TimeSpan.FromHours(_hours);
}
public void OnStateApplied(ApplyStateContext context, IWriteOnlyTransaction transaction)
{
context.JobExpirationTimeout = TimeSpan.FromHours(_hours);
}
}
Another option (or maybe as a failsafe mechanism) is to check the creation DateTime of the job when it is started. The downside is that the Job will be queued and marked as completed.