I have one hangfire server with ~50 recurring jobs. Hangfire setting up on IIS like in this example. Recurring jobs added to hangfire in startup.cs like this:
RecurringJob.AddOrUpdate(job.desctiprion,
() => job.startJob(),
job.cron,
TimeZoneInfo.Local);
I need to add new recurring job which running every minute. But there is little chance that this job will be running longer minute. My goal - provide to concurrently work only one exemplar of this job.
What solutions are there? As I understand need something like queue with one thread, but queues don't support thread settings.
You can use DisableConcurrentExecution
filter to prevent concurrent executions.
[DisableConcurrentExecution(timeoutInSeconds: 60)]
public void SomeJob()
{
//method body
}
This filter places a distributed lock in the beginning of a method performance and releases it after it was completed using the
IServerFilter
interface. The type and method name are being used as a locking resource. Each storage uses its own distributed lock implementation. (read more here)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With