Class: Zizq::EnqueueRequest
- Inherits:
-
Object
- Object
- Zizq::EnqueueRequest
- Defined in:
- lib/zizq/enqueue_request.rb,
sig/generated/zizq/enqueue_request.rbs
Overview
Instance Attribute Summary collapse
-
#backoff ⇒ Zizq::backoff?
Backoff configuration (in seconds).
-
#delay ⇒ Zizq::to_f?
Delay before the job becomes ready (seconds).
-
#payload ⇒ Object
Job payload (serialized arguments).
-
#priority ⇒ Integer?
Job priority (lower = higher priority).
-
#queue ⇒ String
Target queue name.
-
#ready_at ⇒ Zizq::to_f?
Absolute time when the job becomes ready (fractional seconds since epoch).
-
#retention ⇒ Zizq::retention?
Retention configuration (in seconds).
-
#retry_limit ⇒ Integer?
Maximum number of retries before the job is killed.
-
#type ⇒ String
Job type string (e.g. class name).
-
#unique_key ⇒ String?
Unique key for deduplication.
-
#unique_while ⇒ Zizq::unique_scope?
Uniqueness scope.
Instance Method Summary collapse
-
#initialize(type:, queue:, payload:, priority: nil, delay: nil, ready_at: nil, retry_limit: nil, backoff: nil, retention: nil, unique_key: nil, unique_while: nil) ⇒ EnqueueRequest
constructor
A new instance of EnqueueRequest.
-
#to_enqueue_params ⇒ Object
Convert to the params expected by
Client#enqueue. -
#update(type: @type, queue: @queue, payload: @payload, priority: @priority, delay: @delay, ready_at: @ready_at, retry_limit: @retry_limit, backoff: @backoff, retention: @retention, unique_key: @unique_key, unique_while: @unique_while) ⇒ self
Update one or more fields in place.
Constructor Details
#initialize(type:, queue:, payload:, priority: nil, delay: nil, ready_at: nil, retry_limit: nil, backoff: nil, retention: nil, unique_key: nil, unique_while: nil) ⇒ EnqueueRequest
Returns a new instance of EnqueueRequest.
63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 |
# File 'lib/zizq/enqueue_request.rb', line 63 def initialize(type:, queue:, payload:, priority: nil, delay: nil, ready_at: nil, retry_limit: nil, backoff: nil, retention: nil, unique_key: nil, unique_while: nil) update( type:, queue:, payload:, priority:, delay:, ready_at:, retry_limit:, backoff:, retention:, unique_key:, unique_while:, ) end |
Instance Attribute Details
#backoff ⇒ Zizq::backoff?
Backoff configuration (in seconds).
40 41 42 |
# File 'lib/zizq/enqueue_request.rb', line 40 def backoff @backoff end |
#delay ⇒ Zizq::to_f?
Delay before the job becomes ready (seconds).
31 32 33 |
# File 'lib/zizq/enqueue_request.rb', line 31 def delay @delay end |
#payload ⇒ Object
Job payload (serialized arguments).
25 26 27 |
# File 'lib/zizq/enqueue_request.rb', line 25 def payload @payload end |
#priority ⇒ Integer?
Job priority (lower = higher priority).
28 29 30 |
# File 'lib/zizq/enqueue_request.rb', line 28 def priority @priority end |
#queue ⇒ String
Target queue name.
22 23 24 |
# File 'lib/zizq/enqueue_request.rb', line 22 def queue @queue end |
#ready_at ⇒ Zizq::to_f?
Absolute time when the job becomes ready (fractional seconds since epoch).
34 35 36 |
# File 'lib/zizq/enqueue_request.rb', line 34 def ready_at @ready_at end |
#retention ⇒ Zizq::retention?
Retention configuration (in seconds).
43 44 45 |
# File 'lib/zizq/enqueue_request.rb', line 43 def retention @retention end |
#retry_limit ⇒ Integer?
Maximum number of retries before the job is killed.
37 38 39 |
# File 'lib/zizq/enqueue_request.rb', line 37 def retry_limit @retry_limit end |
#type ⇒ String
Job type string (e.g. class name).
19 20 21 |
# File 'lib/zizq/enqueue_request.rb', line 19 def type @type end |
#unique_key ⇒ String?
Unique key for deduplication.
46 47 48 |
# File 'lib/zizq/enqueue_request.rb', line 46 def unique_key @unique_key end |
#unique_while ⇒ Zizq::unique_scope?
Uniqueness scope.
49 50 51 |
# File 'lib/zizq/enqueue_request.rb', line 49 def unique_while @unique_while end |
Instance Method Details
#to_enqueue_params ⇒ Object
Convert to the params expected by Client#enqueue.
Handles seconds -> milliseconds conversion for time-based fields, delay -> ready_at resolution, and nil omission.
144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 |
# File 'lib/zizq/enqueue_request.rb', line 144 def to_enqueue_params #: () -> Hash[Symbol, untyped] params = { queue:, type:, payload: } #: Hash[Symbol, untyped] params[:priority] = priority if priority effective_ready_at = if delay Time.now.to_f + delay.to_f else ready_at end params[:ready_at] = effective_ready_at if effective_ready_at params[:retry_limit] = retry_limit if retry_limit if backoff params[:backoff] = { exponent: backoff[:exponent].to_f, base_ms: (backoff[:base].to_f * 1000).to_i, jitter_ms: (backoff[:jitter].to_f * 1000).to_i } end if retention ret = {} #: Hash[Symbol, Integer] ret[:completed_ms] = (retention[:completed].to_f * 1000).to_i if retention[:completed] ret[:dead_ms] = (retention[:dead].to_f * 1000).to_i if retention[:dead] params[:retention] = ret end params[:unique_key] = unique_key if unique_key params[:unique_while] = unique_while.to_s if unique_while params end |
#update(type: @type, queue: @queue, payload: @payload, priority: @priority, delay: @delay, ready_at: @ready_at, retry_limit: @retry_limit, backoff: @backoff, retention: @retention, unique_key: @unique_key, unique_while: @unique_while) ⇒ self
Update one or more fields in place.
Each keyword argument defaults to the current field value, so
callers only need to name the fields they want to change. Returns
self for chaining. Unknown keys raise ArgumentError — this is
the signal that prevents typos like :retries from silently
doing nothing.
req.update(priority: 0, ready_at: Time.now + 60)
Used by Zizq::EnqueueWith to apply scoped overrides, and can be
called directly from enqueue blocks as an alternative to assigning
individual attributes.
115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 |
# File 'lib/zizq/enqueue_request.rb', line 115 def update(type: @type, queue: @queue, payload: @payload, priority: @priority, delay: @delay, ready_at: @ready_at, retry_limit: @retry_limit, backoff: @backoff, retention: @retention, unique_key: @unique_key, unique_while: @unique_while) @type = type @queue = queue @payload = payload @priority = priority @delay = delay @ready_at = ready_at @retry_limit = retry_limit @backoff = backoff @retention = retention @unique_key = unique_key @unique_while = unique_while self end |