lib/backburner/queue.rb in backburner-1.5.0 vs lib/backburner/queue.rb in backburner-1.6.0
- old
+ new
@@ -2,10 +2,13 @@
module Queue
def self.included(base)
base.instance_variable_set(:@queue_name, nil)
base.instance_variable_set(:@queue_priority, nil)
base.instance_variable_set(:@queue_respond_timeout, nil)
+ base.instance_variable_set(:@queue_max_job_retries, nil)
+ base.instance_variable_set(:@queue_retry_delay, nil)
+ base.instance_variable_set(:@queue_retry_delay_proc, nil)
base.instance_variable_set(:@queue_jobs_limit, nil)
base.instance_variable_set(:@queue_garbage_limit, nil)
base.instance_variable_set(:@queue_retry_limit, nil)
base.extend ClassMethods
Backburner::Worker.known_queue_classes << base
@@ -49,9 +52,51 @@
def queue_respond_timeout(ttr=nil)
if ttr
@queue_respond_timeout = ttr
else # accessor
@queue_respond_timeout
+ end
+ end
+
+ # Returns or assigns queue max_job_retries for this job
+ #
+ # @example
+ # queue_max_job_retries 120
+ # @klass.queue_max_job_retries # => 120
+ #
+ def queue_max_job_retries(delay=nil)
+ if delay
+ @queue_max_job_retries = delay
+ else # accessor
+ @queue_max_job_retries
+ end
+ end
+
+ # Returns or assigns queue retry_delay for this job
+ #
+ # @example
+ # queue_retry_delay 120
+ # @klass.queue_retry_delay # => 120
+ #
+ def queue_retry_delay(delay=nil)
+ if delay
+ @queue_retry_delay = delay
+ else # accessor
+ @queue_retry_delay
+ end
+ end
+
+ # Returns or assigns queue retry_delay_proc for this job
+ #
+ # @example
+ # queue_retry_delay_proc lambda { |min_retry_delay, num_retries| min_retry_delay + (num_retries ** 2) }
+ # @klass.queue_retry_delay_proc # => lambda { |min_retry_delay, num_retries| min_retry_delay + (num_retries ** 2) }
+ #
+ def queue_retry_delay_proc(proc=nil)
+ if proc
+ @queue_retry_delay_proc = proc
+ else # accessor
+ @queue_retry_delay_proc
end
end
# Returns or assigns queue parallel active jobs limit (only ThreadsOnFork and Threading workers)
#