lib/backburner/configuration.rb in backburner-1.0.0 vs lib/backburner/configuration.rb in backburner-1.1.0
- old
+ new
@@ -1,35 +1,44 @@
module Backburner
class Configuration
PRIORITY_LABELS = { :high => 0, :medium => 100, :low => 200 }
- attr_accessor :beanstalk_url # beanstalk url connection
- attr_accessor :tube_namespace # namespace prefix for every queue
- attr_accessor :default_priority # default job priority
- attr_accessor :respond_timeout # default job timeout
- attr_accessor :on_error # error handler
- attr_accessor :max_job_retries # max job retries
- attr_accessor :retry_delay # retry delay in seconds
- attr_accessor :default_queues # default queues
- attr_accessor :logger # logger
- attr_accessor :default_worker # default worker class
- attr_accessor :primary_queue # the general queue
- attr_accessor :priority_labels # priority labels
- attr_accessor :reserve_timeout # duration to wait to reserve on a single server
+ attr_accessor :beanstalk_url # beanstalk url connection
+ attr_accessor :tube_namespace # namespace prefix for every queue
+ attr_reader :namespace_separator # namespace separator
+ attr_accessor :default_priority # default job priority
+ attr_accessor :respond_timeout # default job timeout
+ attr_accessor :on_error # error handler
+ attr_accessor :max_job_retries # max job retries
+ attr_accessor :retry_delay # (minimum) retry delay in seconds
+ attr_accessor :retry_delay_proc # proc to calculate delay (and allow for back-off)
+ attr_accessor :default_queues # default queues
+ attr_accessor :logger # logger
+ attr_accessor :default_worker # default worker class
+ attr_accessor :primary_queue # the general queue
+ attr_accessor :priority_labels # priority labels
+ attr_accessor :reserve_timeout # duration to wait to reserve on a single server
def initialize
- @beanstalk_url = "beanstalk://localhost"
- @tube_namespace = "backburner.worker.queue"
- @default_priority = 65536
- @respond_timeout = 120
- @on_error = nil
- @max_job_retries = 0
- @retry_delay = 5
- @default_queues = []
- @logger = nil
- @default_worker = Backburner::Workers::Simple
- @primary_queue = "backburner-jobs"
- @priority_labels = PRIORITY_LABELS
- @reserve_timeout = nil
+ @beanstalk_url = "beanstalk://localhost"
+ @tube_namespace = "backburner.worker.queue"
+ @namespace_separator = "."
+ @default_priority = 65536
+ @respond_timeout = 120
+ @on_error = nil
+ @max_job_retries = 0
+ @retry_delay = 5
+ @retry_delay_proc = lambda { |min_retry_delay, num_retries| min_retry_delay + (num_retries ** 3) }
+ @default_queues = []
+ @logger = nil
+ @default_worker = Backburner::Workers::Simple
+ @primary_queue = "backburner-jobs"
+ @priority_labels = PRIORITY_LABELS
+ @reserve_timeout = nil
+ end
+
+ def namespace_separator=(val)
+ raise 'Namespace separator cannot used reserved queue configuration separator ":"' if val == ':'
+ @namespace_separator = val
end
end # Configuration
end # Backburner