The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Jonk::Cookbook::RetryJob - retry job with wait few minitus

USAGE

    #! perl
    use strict;
    use warnings;
    use DBI;
    use Jonk
    use Your::Worker;
    
    my $dbh = DBI->connect('dbi:mysql:test','user','pass');
    my $jonk = Jonk->new($dbh, {functions => [qw/worker_key/]});
    my $job_id = $jonk->insert('worker_key','job_data_here');

    while (1) {
        my $job = $jonk->find_job;

        eval {
            Your::Worker->work($job);
        };
        if ($@) {
            if ($job->retry_cnt >= 5) {
                $job->aborted();
            } else {
                $job->failed(
                    {
                        retry_delay => ($job->retry_cnt*30), # wait for (retry_cnt * 30sec)
                    }
                );
            }
        }

        sleep(3); # wait for 3 sec.
    }