Sha256: 35f55afd058ee3cc750324279b401c383cb2982ac2008ad5352ff31c99805a93

Contents?: true

Size: 1.78 KB

Versions: 27

Compression:

Stored size: 1.78 KB

Contents

require_relative './queue_latency'

module RooOnRails
  module Sidekiq
    class Settings
      DEFAULT_QUEUE_LATENCY_VALUES = {
        'monitoring' => 10.seconds.to_i,
        'realtime' => 10.seconds.to_i,
        'within1minute' => 1.minute.to_i,
        'within5minutes' => 5.minutes.to_i,
        'within30minutes' => 30.minutes.to_i,
        'within1hour' => 1.hour.to_i,
        'within1day' => 1.day.to_i,
        'default' => 1.day.to_i
      }.freeze

      class << self
        def queues
          @queues ||= permitted_latency_values.sort_by(&:last).map(&:first).freeze
        end

        def concurrency
          ENV.fetch('SIDEKIQ_THREADS', 25)
        end

        def permitted_latency_values
          @permitted_latency_values ||= ENV.key?('SIDEKIQ_QUEUES') ? env_queue_latency_values.freeze : DEFAULT_QUEUE_LATENCY_VALUES
        end

        private

        def env_queue_latency_values
          {}.tap do |hash|
            ENV['SIDEKIQ_QUEUES'].split(',').each do |entry|
              queue_entry = entry.strip
              if DEFAULT_QUEUE_LATENCY_VALUES.key?(queue_entry)
                queue_name = queue_entry
                hash[queue_name] = DEFAULT_QUEUE_LATENCY_VALUES[queue_entry]
              elsif queue_entry.match(/\Awithin\d+.+\z/)
                _, number, unit = queue_entry.partition(/\d+/)
                hash[queue_entry] = number.to_i.public_send(unit.strip).to_i
              elsif queue_entry.include?(':')
                queue_name, latency_info = queue_entry.split(':')
                _, number, unit = latency_info.partition(/\d+/)
                hash[queue_name] = number.to_i.public_send(unit.strip).to_i
              else
                hash[queue_entry] = nil
              end
            end
          end
        end
      end
    end
  end
end

Version data entries

27 entries across 27 versions & 1 rubygems

Version Path
roo_on_rails-2.2.2 lib/roo_on_rails/sidekiq/settings.rb
roo_on_rails-2.2.1 lib/roo_on_rails/sidekiq/settings.rb
roo_on_rails-2.2.0 lib/roo_on_rails/sidekiq/settings.rb
roo_on_rails-2.1.2 lib/roo_on_rails/sidekiq/settings.rb
roo_on_rails-2.1.0 lib/roo_on_rails/sidekiq/settings.rb
roo_on_rails-2.0.0.pre.pre.2 lib/roo_on_rails/sidekiq/settings.rb
roo_on_rails-2.0.0.pre.pre.1 lib/roo_on_rails/sidekiq/settings.rb
roo_on_rails-1.22.0 lib/roo_on_rails/sidekiq/settings.rb
roo_on_rails-1.21.0 lib/roo_on_rails/sidekiq/settings.rb
roo_on_rails-1.20.0 lib/roo_on_rails/sidekiq/settings.rb
roo_on_rails-1.19.0 lib/roo_on_rails/sidekiq/settings.rb
roo_on_rails-1.18.0 lib/roo_on_rails/sidekiq/settings.rb
roo_on_rails-1.17.0 lib/roo_on_rails/sidekiq/settings.rb
roo_on_rails-1.16.2 lib/roo_on_rails/sidekiq/settings.rb
roo_on_rails-1.16.1 lib/roo_on_rails/sidekiq/settings.rb
roo_on_rails-1.16.0 lib/roo_on_rails/sidekiq/settings.rb
roo_on_rails-1.15.0 lib/roo_on_rails/sidekiq/settings.rb
roo_on_rails-1.14.0 lib/roo_on_rails/sidekiq/settings.rb
roo_on_rails-1.13.1 lib/roo_on_rails/sidekiq/settings.rb
roo_on_rails-1.13.0 lib/roo_on_rails/sidekiq/settings.rb