rihanna v0.5.2 Rihanna

The primary client interface for Rihanna.

There are two ways to dispatch jobs with Rihanna:

  1. Using mod-fun-args which is a bit like RPC
  2. Using a module that implements Rihanna.Job and passing in one argument

See the documentation for enqueue/1 and enqueue/2 for more details.

Supervisor

You must have started Rihanna.Supervisor otherwise you will see an error trying to enqueue or retry jobs.

Notes on queueing

Rihanna uses a FIFO job queue, so jobs will be processed roughly in the order that they are enqueued. However, because Rihanna is a concurrent job queue, it may have multiple workers processing jobs at the same time so there is no guarantee of any ordering in practice.

Link to this section Summary

Functions

Enqueues a job specified as a simple mod-fun-args tuple

Enqueues a job specified as a module and one argument

Retries a job by ID. ID can be passed as either integer or string

Link to this section Functions

Link to this function enqueue(term)
enqueue({module(), atom(), list()}) :: {:ok, Rihanna.Job.t()}

Enqueues a job specified as a simple mod-fun-args tuple.

Example

> Rihanna.enqueue({IO, :puts, ["Umbrella-ella-ella"]})
Link to this function enqueue(mod, arg)
enqueue(module(), any()) :: {:ok, Rihanna.Job.t()}

Enqueues a job specified as a module and one argument.

It is expected that the module implements the Rihanna.Job behaviour and defines a function Rihanna.Job.perform/1.

The argument may be anything.

See Rihanna.Job for more on how to implement your own jobs.

You can enqueue a job like so:

# schedule job for later execution and return immediately
Rihanna.enqueue(MyApp.MyJob, [arg1, arg2])
Link to this function retry(job_id)
retry(String.t()) :: {:ok, :retried} | {:error, :job_not_found}
retry(integer()) :: {:ok, :retried} | {:error, :job_not_found}

Retries a job by ID. ID can be passed as either integer or string.

Note that this only works if the job has failed - if it has not yet run or is currently in progress, this function will do nothing.