Rihanna v1.2.1 Rihanna.Job behaviour View Source
A behaviour for Rihanna jobs.
You must implement Rihanna.Job.perform/1
in your job, and it must return
one of the following values:
:ok
{:ok, result}
:error
{:error, reason}
You can define your job like the example below:
defmodule MyApp.MyJob do
@behaviour Rihanna.Job
# NOTE: `perform/1` is a required callback. It takes exactly one argument. To
# pass multiple arguments, wrap them in a list and destructure in the
# function head as in this example
def perform([arg1, arg2]) do
success? = do_some_work(arg1, arg2)
if success? do
# job completed successfully
:ok
else
# job execution failed
{:error, :failed}
end
end
end
This behaviour allows you to tailor what you’d like to happen after your job either fails, or raises an exception.
You can define an after_error/2
method which will run before the job is
placed on the failed job queue.
If you don’t define this callback, it will add it to the failed job queue without running anything.
def after_error(failure_reason, args) do
notify_someone(__MODULE__, failure_reason, args)
end
Link to this section Summary
Functions
Checks whether a job implemented the after_error
callback and runs it if it
does
The name of the jobs table
Link to this section Types
Link to this section Functions
Checks whether a job implemented the after_error
callback and runs it if it
does.
The name of the jobs table.
Link to this section Callbacks
Link to this callback
after_error(arg0, arg)
View Source
(optional)
after_error({:error, reason()} | :error | Exception.t(), arg()) :: any()