View Source Oban.Plugins.Stager (Oban v2.13.0)
Transition jobs to the :available
state when:
- jobs are
:scheduled
and the current time is on or after the timestamp specified in:scheduled_at
. - jobs are
:retryable
and they don't reach the attempt limit specified by:max_attempts
.
Besides changing the state of jobs, this plugin also uses PubSub to notify queues that they have available jobs. This prevents every queue from polling independently and reduces database load.
This module is necessary for the execution of scheduled and retryable jobs. As such, it's started
by each Oban instance automatically unless plugins: false
is specified.
options
Options
:interval
- the number of milliseconds between database updates. This is directly tied to the resolution of scheduled jobs. For example, with aninterval
of5_000ms
, scheduled jobs are checked every 5 seconds. The default is1_000ms
.:limit
— the number of jobs that will be staged each time the plugin runs. Defaults to5,000
, which you can increase if staging can't keep up with your insertion rate or decrease if you're experiencing staging timeouts.
instrumenting-with-telemetry
Instrumenting with Telemetry
The Oban.Plugins.Stager
plugin adds the following metadata to the [:oban, :plugin, :stop]
event:
:staged_count
- the number of jobs that were staged in the database
Link to this section Summary
Functions
Returns a specification to start this module under a supervisor.
Link to this section Types
@type option() :: Oban.Plugin.option() | {:interval, pos_integer()}
Link to this section Functions
Returns a specification to start this module under a supervisor.
See Supervisor
.