NAME

Minion::Worker - Minion worker

SYNOPSIS

use Minion::Worker;

my $worker = Minion::Worker->new(minion => $minion);

DESCRIPTION

Minion::Worker performs jobs for Minion.

EVENTS

Minion::Worker inherits all events from Mojo::EventEmitter and can emit the following new ones.

dequeue

$worker->on(dequeue => sub {
  my ($worker, $job) = @_;
  ...
});

Emitted in the worker process after a job has been dequeued.

$worker->on(dequeue => sub {
  my ($worker, $job) = @_;
  my $id = $job->id;
  say "Job $id has been dequeued.";
});

ATTRIBUTES

Minion::Worker implements the following attributes.

commands

my $commands = $worker->commands;
$worker      = $worker->commands({jobs => sub {...}});

Registered worker remote control commands.

id

my $id  = $worker->id;
$worker = $worker->id($id);

Worker id.

minion

my $minion = $worker->minion;
$worker    = $worker->minion(Minion->new);

Minion object this worker belongs to.

status

my $status = $worker->status;
$worker    = $worker->status({queues => ['default', 'important']);

Status information to share every time "register" is called.

METHODS

Minion::Worker inherits all methods from Mojo::EventEmitter and implements the following new ones.

add_command

$worker = $worker->add_command(jobs => sub {...});

Register a worker remote control command.

$worker->add_command(foo => sub {
  my ($worker, @args) = @_;
  ...
});

dequeue

my $job = $worker->dequeue(0.5);
my $job = $worker->dequeue(0.5 => {queues => ['important']});

Wait a given amount of time in seconds for a job, dequeue Minion::Job object and transition from inactive to active state, or return undef if queues were empty.

These options are currently available:

id
id => '10023'

Dequeue a specific job.

queues
queues => ['important']

One or more queues to dequeue jobs from, defaults to default.

info

my $info = $worker->info;

Get worker information.

# Check worker host
my $host = $worker->info->{host};

These fields are currently available:

host
host => 'localhost'

Worker host.

jobs
jobs => ['10023', '10024', '10025', '10029']

Ids of jobs the worker is currently processing.

notified
notified => 784111777

Epoch time worker sent the last heartbeat.

pid
pid => 12345

Process id of worker.

started
started => 784111777

Epoch time worker was started.

status
status => {queues => ['default', 'important']}

Hash reference with whatever status information the worker would like to share.

process_commands

$worker = $worker->process_commands;

Process worker remote control commands.

register

$worker = $worker->register;

Register worker or send heartbeat to show that this worker is still alive.

unregister

$worker = $worker->unregister;

Unregister worker.

SEE ALSO

Minion, Mojolicious::Guides, http://mojolicious.org.