Active Job is a framework in Rails, for declaring jobs and making them run asynchronously on a variety of queuing backends. It has built-in adapters for multiple queuing backends like Sidekiq, Resque, Delayed jobs, and others.
A small example of a background job is as shown below:
A background job can fail due to many reasons like incorrect business logic, database failures, network issues or the queue itself is not functional.
We can pass a
retry option to the background job
which will specify the number of times a background
job needs to be re-tried in case of failures.
we can globally configure the
max_retries option by adding the following
We can override the globally configured
max_retries option for a particular job
Retry jobs indefinitely from Rails 7
With the latest changes in Rails 7,
developers can specify to
run a background job indefinitely
We pass the
:unlimited value to the
retry_on method which notifies that the job should
always be re-enqueued in case of failures.
The default value for the
attempts: key is 5,
so the job will be retired five times and if failed will get
enqueued to dead queue.
This functionality is useful in cases where developers are sure the job failure will be resolved eventually. The reasons for failure could be infrastructural issues like a resource getting locked for a long time, the database is down or network issue.
This feature should be used with caution. Only those failures should be retired indefinitely, where developers are sure the failure will be resolved.