class Configuration
Immutable request queue and admission configuration.
Nested Classes and Modules
class BuilderBuilds configurations using the application DSL.
Definitions
def self.build(root: Dir.pwd, &block)
Build a configuration using a scoped builder.
Signature
-
parameter
rootString The root for relative configuration files.
-
yields
{|builder| ...} The configuration builder.
-
returns
Configuration The immutable configuration.
Implementation
def self.build(root: Dir.pwd, &block)
builder = Builder.new(root)
if block
if block.arity.zero?
builder.instance_eval(&block)
else
block.call(builder)
end
end
builder.build
end
def self.default
Signature
-
returns
Configuration A single-queue, single-permit configuration.
Implementation
def self.default
@default ||= build do
queue(:default)
default_queue(:default)
end
end
def self.load(paths)
Load and build trusted application configuration files.
Signature
-
parameter
pathsString | Array(String) The configuration files to load.
-
returns
Configuration The immutable configuration.
Implementation
def self.load(paths)
builder = Builder.new
Array(paths).each{|path| builder.load_file(path)}
builder.build
end
def initialize(queues:, default_queue_name:, pending_limit:, permit_limit:)
Signature
-
parameter
queuesHash(Symbol, Queue) The configured queues.
-
parameter
default_queue_nameSymbol The fallback queue name.
-
parameter
pending_limitInteger | Nil The global pending request limit.
-
parameter
permit_limitInteger The processing permits per worker.
Implementation
def initialize(queues:, default_queue_name:, pending_limit:, permit_limit:)
@queues = queues
@default_queue_name = default_queue_name
@pending_limit = pending_limit
@permit_limit = permit_limit
end
def classify(request)
Classify a request using matchers in definition order.
Signature
-
returns
Queue The matching or default queue.
Implementation
def classify(request)
@queues.each_value do |queue|
return queue if queue.match?(request)
end
@queues.fetch(@default_queue_name)
end