This is a feature request to implement SlidingInvisibilityTimeout.
Every now and then we run into issues with the InvisibilityTimeout for "long-running" jobs, which gets cancelled when the timeout is reached and then requeued. If the job does not implement the CancellationToken properly, it keeps running in the background while the new job is enqueued and duplicate processing occurs - there are some remedies for that as well, but none without some caveats.
Increasing the timeout also has its caveats as it might result in jobs not being executed for many hours in case of hard-failure on server/process.
The PostgreSQL provider has the same issue, which also explains the issue better/in more detail, and how the SQLServer provider has solved it:
Hi and thanks for a great library! :-)
This is a feature request to implement SlidingInvisibilityTimeout.
Every now and then we run into issues with the InvisibilityTimeout for "long-running" jobs, which gets cancelled when the timeout is reached and then requeued. If the job does not implement the CancellationToken properly, it keeps running in the background while the new job is enqueued and duplicate processing occurs - there are some remedies for that as well, but none without some caveats. Increasing the timeout also has its caveats as it might result in jobs not being executed for many hours in case of hard-failure on server/process.
The PostgreSQL provider has the same issue, which also explains the issue better/in more detail, and how the SQLServer provider has solved it:
And there is a pull-request for implementing SlidingInvisibilityTimeout for inspiration if someone wants to implement it here: