Class: PatientHttp::SolidQueue::Configuration
- Inherits:
-
Configuration
- Object
- Configuration
- PatientHttp::SolidQueue::Configuration
- Defined in:
- lib/patient_http/solid_queue/configuration.rb
Overview
Configuration for the Solid Queue Async HTTP gem.
Wraps PatientHttp::Configuration with Solid Queue-aware defaults and adds Solid Queue-specific options like queue name settings.
Defined Under Namespace
Classes: ProfileConfiguration
Constant Summary collapse
- DEFAULT_PAYLOAD_STORE_THRESHOLD =
Default threshold in bytes above which payloads are stored externally.
64 * 1024
- SHUTDOWN_TIMEOUT_BUFFER =
Buffer in seconds subtracted from SolidQueue.shutdown_timeout to derive the default shutdown_timeout for this gem's connection pool.
2
Instance Attribute Summary collapse
-
#heartbeat_interval ⇒ Numeric
Heartbeat update interval in seconds.
-
#orphan_threshold ⇒ Numeric
Orphan detection threshold in seconds.
-
#payload_store_threshold ⇒ Integer
Size threshold in bytes for external payload storage.
-
#queue_name ⇒ String?
Queue name for RequestJob and CallbackJob.
Instance Method Summary collapse
-
#initialize(heartbeat_interval: 60, orphan_threshold: 300, queue_name: nil, payload_store_threshold: DEFAULT_PAYLOAD_STORE_THRESHOLD, on_retries_exhausted: nil, **pool_options) ⇒ Configuration
constructor
A new instance of Configuration.
-
#on_retries_exhausted(&block) ⇒ #call?
Handler invoked when a CallbackWorker job exhausts all retries.
-
#on_retries_exhausted=(value) ⇒ Object
Set the on_retries_exhausted handler.
-
#processor(name, **options) ⇒ Hash
Declare a named processor profile.
-
#processor_config(name) ⇒ PatientHttp::Configuration
Build the effective configuration for a named processor.
-
#processor_options(name) ⇒ Hash?
Read back the options declared for a named processor profile.
-
#processor_profiles ⇒ Hash{Symbol => Hash}
All declared processor profiles.
-
#to_h ⇒ Hash
Configuration as a hash for logging/inspection.
Constructor Details
#initialize(heartbeat_interval: 60, orphan_threshold: 300, queue_name: nil, payload_store_threshold: DEFAULT_PAYLOAD_STORE_THRESHOLD, on_retries_exhausted: nil, **pool_options) ⇒ Configuration
Returns a new instance of Configuration.
53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 |
# File 'lib/patient_http/solid_queue/configuration.rb', line 53 def initialize( heartbeat_interval: 60, orphan_threshold: 300, queue_name: nil, payload_store_threshold: DEFAULT_PAYLOAD_STORE_THRESHOLD, on_retries_exhausted: nil, ** ) if ::SolidQueue.shutdown_timeout [:shutdown_timeout] ||= [::SolidQueue.shutdown_timeout - SHUTDOWN_TIMEOUT_BUFFER, 1].max end [:user_agent] ||= "SolidQueue-AsyncHttp" [:logger] ||= (defined?(SolidQueue.logger) ? SolidQueue.logger : nil) super(**) @processor_profiles = {default: {}} self.queue_name = queue_name self.heartbeat_interval = heartbeat_interval self.orphan_threshold = orphan_threshold self.payload_store_threshold = payload_store_threshold || DEFAULT_PAYLOAD_STORE_THRESHOLD self.on_retries_exhausted = on_retries_exhausted end |
Instance Attribute Details
#heartbeat_interval ⇒ Numeric
Returns Heartbeat update interval in seconds.
22 23 24 |
# File 'lib/patient_http/solid_queue/configuration.rb', line 22 def heartbeat_interval @heartbeat_interval end |
#orphan_threshold ⇒ Numeric
Returns Orphan detection threshold in seconds.
19 20 21 |
# File 'lib/patient_http/solid_queue/configuration.rb', line 19 def orphan_threshold @orphan_threshold end |
#payload_store_threshold ⇒ Integer
Returns Size threshold in bytes for external payload storage.
16 17 18 |
# File 'lib/patient_http/solid_queue/configuration.rb', line 16 def payload_store_threshold @payload_store_threshold end |
#queue_name ⇒ String?
Returns Queue name for RequestJob and CallbackJob.
25 26 27 |
# File 'lib/patient_http/solid_queue/configuration.rb', line 25 def queue_name @queue_name end |
Instance Method Details
#on_retries_exhausted ⇒ #call? #on_retries_exhausted {|error| ... } ⇒ #call?
Returns Handler invoked when a CallbackWorker job exhausts all retries.
35 36 37 38 39 40 41 |
# File 'lib/patient_http/solid_queue/configuration.rb', line 35 def on_retries_exhausted(&block) if block @on_retries_exhausted = block else @on_retries_exhausted end end |
#on_retries_exhausted=(value) ⇒ Object
Set the on_retries_exhausted handler.
This handler is called when a CallbackWorker job exhausts all retries. It receives the same arguments as the on_error callback.
170 171 172 173 174 175 176 |
# File 'lib/patient_http/solid_queue/configuration.rb', line 170 def on_retries_exhausted=(value) if value && !value.respond_to?(:call) raise ArgumentError.new("on_retries_exhausted must respond to #call, got: #{value.class}") end @on_retries_exhausted = value end |
#processor(name, **options) ⇒ Hash
Declare a named processor profile.
Each profile becomes an independent processor with its own capacity,
timeouts, and threads. Options are overrides applied on top of this
configuration's HTTP pool options. Calling this with no options
declares a profile that inherits every option. Requests select a
processor with the processor: option on
PatientHttp::SolidQueue.execute (or on the request itself). The
:default profile always exists; declaring it overrides options for
the default processor.
97 98 99 100 |
# File 'lib/patient_http/solid_queue/configuration.rb', line 97 def processor(name, **) key = normalize_processor_name(name) @processor_profiles[key] = () end |
#processor_config(name) ⇒ PatientHttp::Configuration
Build the effective configuration for a named processor. The default profile with no overrides is this configuration itself; other profiles get a view of this configuration with their overrides applied, so they share secrets, preprocessors, payload stores, and encryption.
125 126 127 128 129 130 131 132 133 |
# File 'lib/patient_http/solid_queue/configuration.rb', line 125 def processor_config(name) key = normalize_processor_name(name) profile = @processor_profiles[key] raise ArgumentError.new("Unknown processor profile: #{name.inspect}") unless profile return self if profile.empty? ProfileConfiguration.new(self, profile) end |
#processor_options(name) ⇒ Hash?
Read back the options declared for a named processor profile.
106 107 108 |
# File 'lib/patient_http/solid_queue/configuration.rb', line 106 def (name) @processor_profiles[normalize_processor_name(name)] end |
#processor_profiles ⇒ Hash{Symbol => Hash}
All declared processor profiles. Always includes :default.
113 114 115 |
# File 'lib/patient_http/solid_queue/configuration.rb', line 113 def processor_profiles @processor_profiles.dup end |
#to_h ⇒ Hash
Returns configuration as a hash for logging/inspection.
179 180 181 182 183 184 185 186 187 188 |
# File 'lib/patient_http/solid_queue/configuration.rb', line 179 def to_h super.merge( "payload_store_threshold" => payload_store_threshold, "heartbeat_interval" => heartbeat_interval, "orphan_threshold" => orphan_threshold, "queue_name" => queue_name, "on_retries_exhausted" => on_retries_exhausted ? "defined" : nil, "processor_profiles" => processor_profiles.keys.map(&:to_s) ) end |