Class: Zizq::Configuration
- Inherits:
-
Object
- Object
- Zizq::Configuration
- Defined in:
- lib/zizq/configuration.rb
Overview
Global configuration for the Zizq client.
The configuration stores only client-level concerns: server URL, serialization format, and logger. Worker-specific settings (queues, threads, etc.) are passed directly to the Worker.
See: [‘Zizq::configure]`. See: [`Zizq::configuration]`.
Defined Under Namespace
Classes: Identity
Instance Attribute Summary collapse
-
#dequeue_middleware ⇒ Object
readonly
Middleware chain for dequeue/dispatch.
-
#enqueue_middleware ⇒ Object
readonly
Middleware chain for enqueue.
-
#format ⇒ Object
Choice of content-type encoding used in communication with the Zizq server.
-
#logger ⇒ Object
Logger instance to which to write log messages.
-
#tls ⇒ Object
TLS options for connecting to the server over HTTPS.
-
#url ⇒ Object
Base URL of the Zizq server (default: “localhost:7890”).
Instance Method Summary collapse
-
#dispatcher ⇒ Object
The job dispatcher.
-
#dispatcher=(dispatcher) ⇒ Object
Set the dispatcher to a custom dispatcher implementation.
-
#initialize ⇒ Configuration
constructor
: () -> void.
-
#ssl_context ⇒ Object
Build an OpenSSL::SSL::SSLContext from the TLS options, or nil if no TLS options are configured.
-
#validate! ⇒ Object
Validates that required configuration is present.
Constructor Details
#initialize ⇒ Configuration
: () -> void
53 54 55 56 57 58 59 60 |
# File 'lib/zizq/configuration.rb', line 53 def initialize #: () -> void @url = "http://localhost:7890" @format = :msgpack @logger = Logger.new($stdout, level: Logger::INFO) @tls = nil @enqueue_middleware = Middleware::Chain.new(Identity.new) @dequeue_middleware = Middleware::Chain.new(Zizq::Job) end |
Instance Attribute Details
#dequeue_middleware ⇒ Object (readonly)
Middleware chain for dequeue/dispatch. Each middleware receives a ‘Resources::Job` and a chain to continue.
51 52 53 |
# File 'lib/zizq/configuration.rb', line 51 def dequeue_middleware @dequeue_middleware end |
#enqueue_middleware ⇒ Object (readonly)
Middleware chain for enqueue. Each middleware receives an ‘EnqueueRequest` and a chain to continue.
47 48 49 |
# File 'lib/zizq/configuration.rb', line 47 def enqueue_middleware @enqueue_middleware end |
#format ⇒ Object
Choice of content-type encoding used in communication with the Zizq server.
One of: ‘:json`, `:msgpack` (default)
27 28 29 |
# File 'lib/zizq/configuration.rb', line 27 def format @format end |
#logger ⇒ Object
Logger instance to which to write log messages.
30 31 32 |
# File 'lib/zizq/configuration.rb', line 30 def logger @logger end |
#tls ⇒ Object
TLS options for connecting to the server over HTTPS.
All values may be PEM-encoded strings or file paths.
{
ca: "path/to/ca-cert.pem", # CA certificate for server verification
client_cert: "path/to/client-cert.pem", # Client certificate for mTLS
client_key: "path/to/client-key.pem", # Client private key for mTLS
}
Note: Mutual TLS support requires a Zizq Pro license on the server.
43 44 45 |
# File 'lib/zizq/configuration.rb', line 43 def tls @tls end |
#url ⇒ Object
Base URL of the Zizq server (default: “localhost:7890”).
21 22 23 |
# File 'lib/zizq/configuration.rb', line 21 def url @url end |
Instance Method Details
#dispatcher ⇒ Object
The job dispatcher. This is the terminal of the dequeue middleware chain. Defaults to ‘Zizq::Job` which finds and executes jobs written by mixing in the `Zizq::Job` module.
66 67 68 |
# File 'lib/zizq/configuration.rb', line 66 def dispatcher #: () -> Zizq::dispatcher @dequeue_middleware.terminal end |
#dispatcher=(dispatcher) ⇒ Object
Set the dispatcher to a custom dispatcher implementation.
A dispatcher is any object that responds to ‘#call` with a `Zizq::Resources::Job` instance and performs that job through some application-specific logic.
This is the terminal of the dequeue middleware chain.
Any errors raised by the dispatcher will result in the normal backoff/retry behaviour. Jobs are acknowledged automatically on success.
80 81 82 |
# File 'lib/zizq/configuration.rb', line 80 def dispatcher=(dispatcher) #: (Zizq::dispatcher) -> void @dequeue_middleware.terminal = dispatcher end |
#ssl_context ⇒ Object
Build an OpenSSL::SSL::SSLContext from the TLS options, or nil if no TLS options are configured.
99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 |
# File 'lib/zizq/configuration.rb', line 99 def ssl_context #: () -> OpenSSL::SSL::SSLContext? tls = @tls return nil unless tls ctx = OpenSSL::SSL::SSLContext.new if (ca = tls[:ca]) store = OpenSSL::X509::Store.new store.add_cert(load_cert(ca)) ctx.cert_store = store ctx.verify_mode = OpenSSL::SSL::VERIFY_PEER end if (client_cert = tls[:client_cert]) ctx.cert = load_cert(client_cert) end if (client_key = tls[:client_key]) ctx.key = load_key(client_key) end ctx end |
#validate! ⇒ Object
Validates that required configuration is present.
85 86 87 88 89 90 91 92 93 94 |
# File 'lib/zizq/configuration.rb', line 85 def validate! #: () -> void raise ArgumentError, "Zizq.configure: url is required" if url.empty? unless %i[msgpack json].include?(format) raise ArgumentError, "Zizq.configure: format must be :msgpack or :json, got #{format.inspect}" end tls = @tls validate_tls!(tls) if tls end |