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) #