Class: JobTimeSpacer
- Inherits:
-
Object
- Object
- JobTimeSpacer
- Defined in:
- lib/job_time_spacer.rb
Overview
In some cases we may want to enqueue_at several of the same job with batches, spacing them out or incrementing by some amount of seconds, in case the jobs do heavy work or send many MessageBus messages and the like. This class handles figuring out the seconds increments.
Instance Method Summary collapse
- #enqueue(job_name, job_args = {}) ⇒ Object
-
#initialize(seconds_space_increment: 1, seconds_delay: 5) ⇒ JobTimeSpacer
constructor
A new instance of JobTimeSpacer.
Constructor Details
#initialize(seconds_space_increment: 1, seconds_delay: 5) ⇒ JobTimeSpacer
Returns a new instance of JobTimeSpacer.
15 16 17 18 19 |
# File 'lib/job_time_spacer.rb', line 15 def initialize(seconds_space_increment: 1, seconds_delay: 5) @seconds_space_increment = seconds_space_increment @seconds_space_modifier = seconds_space_increment @seconds_step = seconds_delay end |
Instance Method Details
#enqueue(job_name, job_args = {}) ⇒ Object
21 22 23 24 |
# File 'lib/job_time_spacer.rb', line 21 def enqueue(job_name, job_args = {}) Jobs.enqueue_at((@seconds_step * @seconds_space_modifier).seconds.from_now, job_name, job_args) @seconds_space_modifier += @seconds_space_increment end |