The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

NAME

Minion::Backend - Backend base class

SYNOPSIS

  package Minion::Backend::MyBackend;
  use Mojo::Base 'Minion::Backend';

  sub dequeue           {...}
  sub enqueue           {...}
  sub fail_job          {...}
  sub finish_job        {...}
  sub job_info          {...}
  sub list_jobs         {...}
  sub list_workers      {...}
  sub register_worker   {...}
  sub remove_job        {...}
  sub repair            {...}
  sub reset             {...}
  sub retry_job         {...}
  sub stats             {...}
  sub unregister_worker {...}
  sub worker_info       {...}

DESCRIPTION

Minion::Backend is an abstract base class for Minion backends.

ATTRIBUTES

Minion::Backend implements the following attributes.

minion

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

Minion object this backend belongs to.

METHODS

Minion::Backend inherits all methods from Mojo::Base and implements the following new ones.

dequeue

  my $job_info = $backend->dequeue($worker_id, 0.5);

Wait for job, dequeue it and transition from inactive to active state or return undef if queue was empty. Meant to be overloaded in a subclass.

enqueue

  my $job_id = $backend->enqueue('foo');
  my $job_id = $backend->enqueue(foo => [@args]);
  my $job_id = $backend->enqueue(foo => [@args] => {priority => 1});

Enqueue a new job with inactive state. Meant to be overloaded in a subclass.

These options are currently available:

delay
  delay => 10

Delay job for this many seconds (from now).

priority
  priority => 5

Job priority, defaults to 0.

fail_job

  my $bool = $backend->fail_job($job_id);
  my $bool = $backend->fail_job($job_id, 'Something went wrong!');
  my $bool = $backend->fail_job($job_id, {msg => 'Something went wrong!'});

Transition from active to failed state. Meant to be overloaded in a subclass.

finish_job

  my $bool = $backend->finish_job($job_id);
  my $bool = $backend->finish_job($job_id, 'All went well!');
  my $bool = $backend->finish_job($job_id, {msg => 'All went well!'});

Transition from active to finished state. Meant to be overloaded in a subclass.

job_info

  my $job_info = $backend->job_info($job_id);

Get information about a job or return undef if job does not exist. Meant to be overloaded in a subclass.

  # Check job state
  my $state = $backend->job_info($job_id)->{state};

  # Get job result
  my $result = $backend->job_info($job_id)->{result};

These fields are currently available:

args

Job arguments.

created

Time job was created.

delayed

Time job was delayed to.

finished

Time job was finished.

priority

Job priority.

result

Job result.

retried

Time job has been retried.

retries

Number of times job has been retried.

started

Time job was started.

state

Current job state.

task

Task name.

worker

Id of worker that is processing the job.

list_jobs

  my $batch = $backend->list_jobs($offset, $limit);
  my $batch = $backend->list_jobs($offset, $limit, {state => 'inactive'});

Returns the same information as "job_info" but in batches. Meant to be overloaded in a subclass.

These options are currently available:

state
  state => 'inactive'

List only jobs in this state.

task
  task => 'test'

List only jobs for this task.

list_workers

  my $batch = $backend->list_workers($offset, $limit);

Returns the same information as "worker_info" but in batches. Meant to be overloaded in a subclass.

register_worker

  my $worker_id = $backend->register_worker;
  my $worker_id = $backend->register_worker($worker_id);

Register worker or send heartbeat to show that this worker is still alive. Meant to be overloaded in a subclass.

remove_job

  my $bool = $backend->remove_job($job_id);

Remove failed, finished or inactive job from queue. Meant to be overloaded in a subclass.

repair

  $backend->repair;

Repair worker registry and job queue if necessary. Meant to be overloaded in a subclass.

reset

  $backend->reset;

Reset job queue. Meant to be overloaded in a subclass.

retry_job

  my $bool = $backend->retry_job($job_id);
  my $bool = $backend->retry_job($job_id, {delay => 10});

Transition from failed or finished state back to inactive. Meant to be overloaded in a subclass.

These options are currently available:

delay
  delay => 10

Delay job for this many seconds (from now).

stats

  my $stats = $backend->stats;

Get statistics for jobs and workers. Meant to be overloaded in a subclass.

unregister_worker

  $backend->unregister_worker($worker_id);

Unregister worker. Meant to be overloaded in a subclass.

worker_info

  my $worker_info = $backend->worker_info($worker_id);

Get information about a worker or return undef if worker does not exist. Meant to be overloaded in a subclass.

  # Check worker host
  my $host = $backend->worker_info($worker_id)->{host};

These fields are currently available:

host

Worker host.

jobs

Ids of jobs the worker is currently processing.

notified

Last time worker sent a heartbeat.

pid

Process id of worker.

started

Time worker was started.

SEE ALSO

Minion, Mojolicious::Guides, http://mojolicio.us.