NAME

LibreCat::Worker - a base role for workers

SYNOPSIS

    # the default worker function is the underscored package name mapped to the
    # 'work' method
    package LibreCat::Worker::Drink;

    use Catmandu::Sane;
    use Moo;

    with 'LibreCat::Worker';

    sub work {
        my ($workload) = @_;
        log "drinking $workload->{beverage} ... ";
        sleep 3;
    }

    # $queue->add_job('drink', {beverage => 'beer'})

    # with custom worker_functions
    package LibreCat::Worker::drunkard;

    use Catmandu::Sane;
    use Moo;

    with 'LibreCat::Worker';

    sub worker_functions {
        ['drink', {'have_hangover' => 'do_have_hangover'}];
    }

    sub drink {
        my ($workload) = @_;
        log "drinking $workload->{beverage} ... ";
        sleep 3;
    }

    sub do_have_hangover {
        log "aargh ... ";
        sleep 9;
    }

    # $queue->add_job('drink', {beverage => 'wine'})
    # $queue->add_job('drink', {beverage => 'beer'})
    # $queue->add_job('have_hangover')