Wait, what do you mean here? The job is a row in a database. You can crash as much as you want, the row is not going anywhere until you explicitly mark it as "worked" and delete it.
There are different performance constraints to this approach, but data integrity and robustness of it are unmatched, really.
There are different performance constraints to this approach, but data integrity and robustness of it are unmatched, really.