Class: Zizq::EnqueueRequest

Inherits:
Object
  • Object
show all
Defined in:
lib/zizq/enqueue_request.rb,
sig/generated/zizq/enqueue_request.rbs

Overview

Represents a job enqueue request.

Contains all the information needed to enqueue a job. Built by Job::ClassMethods#zizq_enqueue_options or directly for raw enqueues. Mutable — callers can override values via the block form of Zizq.enqueue.

Zizq.enqueue(MyJob, 42) { |req| req.priority = 0 }

Instance Attribute Summary collapse

Instance Method Summary collapse

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, batch: nil) ⇒ EnqueueRequest

Returns a new instance of EnqueueRequest.

RBS:

  • type: String

  • queue: String

  • payload: untyped

  • priority: Integer?

  • delay: Zizq::to_f?

  • ready_at: Zizq::to_f?

  • retry_limit: Integer?

  • backoff: Zizq::backoff?

  • retention: Zizq::retention?

  • unique_key: String?

  • unique_while: Zizq::unique_scope?

  • batch: Zizq::batch?

  • return: void

Parameters:

  • type: (String)
  • queue: (String)
  • payload: (Object)
  • priority: (Integer, nil) (defaults to: nil)
  • delay: (Zizq::to_f, nil) (defaults to: nil)
  • ready_at: (Zizq::to_f, nil) (defaults to: nil)
  • retry_limit: (Integer, nil) (defaults to: nil)
  • backoff: (Zizq::backoff, nil) (defaults to: nil)
  • retention: (Zizq::retention, nil) (defaults to: nil)
  • unique_key: (String, nil) (defaults to: nil)
  • unique_while: (Zizq::unique_scope, nil) (defaults to: nil)
  • batch: (Zizq::batch, nil) (defaults to: nil)


67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
# File 'lib/zizq/enqueue_request.rb', line 67

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,
  batch: nil
)
  update(
    type:,
    queue:,
    payload:,
    priority:,
    delay:,
    ready_at:,
    retry_limit:,
    backoff:,
    retention:,
    unique_key:,
    unique_while:,
    batch:
  )
end

Instance Attribute Details

#backoffZizq::backoff?

Backoff configuration (in seconds).

Returns:

  • (Zizq::backoff, nil)


40
41
42
# File 'lib/zizq/enqueue_request.rb', line 40

def backoff
  @backoff
end

#batchZizq::batch?

Batch configuration for folded jobs.

Returns:

  • (Zizq::batch, nil)


52
53
54
# File 'lib/zizq/enqueue_request.rb', line 52

def batch
  @batch
end

#delayZizq::to_f?

Delay before the job becomes ready (seconds).

Returns:

  • (Zizq::to_f, nil)


31
32
33
# File 'lib/zizq/enqueue_request.rb', line 31

def delay
  @delay
end

#payloadObject

Job payload (serialized arguments).

Returns:

  • (Object)


25
26
27
# File 'lib/zizq/enqueue_request.rb', line 25

def payload
  @payload
end

#priorityInteger?

Job priority (lower = higher priority).

Returns:

  • (Integer, nil)


28
29
30
# File 'lib/zizq/enqueue_request.rb', line 28

def priority
  @priority
end

#queueString

Target queue name.

Returns:

  • (String)


22
23
24
# File 'lib/zizq/enqueue_request.rb', line 22

def queue
  @queue
end

#ready_atZizq::to_f?

Absolute time when the job becomes ready (fractional seconds since epoch).

Returns:

  • (Zizq::to_f, nil)


34
35
36
# File 'lib/zizq/enqueue_request.rb', line 34

def ready_at
  @ready_at
end

#retentionZizq::retention?

Retention configuration (in seconds).

Returns:

  • (Zizq::retention, nil)


43
44
45
# File 'lib/zizq/enqueue_request.rb', line 43

def retention
  @retention
end

#retry_limitInteger?

Maximum number of retries before the job is killed.

Returns:

  • (Integer, nil)


37
38
39
# File 'lib/zizq/enqueue_request.rb', line 37

def retry_limit
  @retry_limit
end

#typeString

Job type string (e.g. class name).

Returns:

  • (String)


19
20
21
# File 'lib/zizq/enqueue_request.rb', line 19

def type
  @type
end

#unique_keyString?

Unique key for deduplication.

Returns:

  • (String, nil)


46
47
48
# File 'lib/zizq/enqueue_request.rb', line 46

def unique_key
  @unique_key
end

#unique_whileZizq::unique_scope?

Uniqueness scope.

Returns:

  • (Zizq::unique_scope, nil)


49
50
51
# File 'lib/zizq/enqueue_request.rb', line 49

def unique_while
  @unique_while
end

Instance Method Details

#to_enqueue_paramsObject

Convert to the params expected by Client#enqueue.

Handles seconds -> milliseconds conversion for time-based fields, delay -> ready_at resolution, and nil omission.

Returns:

  • (Object)


157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
# File 'lib/zizq/enqueue_request.rb', line 157

def to_enqueue_params #: () -> Hash[Symbol, untyped]
  params = { queue:, type:, payload: } #: Hash[Symbol, untyped]
  params[:priority] = priority if priority

  effective_ready_at = (delay ? Time.now.to_f + delay.to_f : ready_at)
  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[:batch] = batch if batch

  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, batch: @batch) ⇒ 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.

RBS:

  • type: String

  • queue: String

  • payload: untyped

  • priority: Integer?

  • delay: Zizq::to_f?

  • ready_at: Zizq::to_f?

  • retry_limit: Integer?

  • backoff: Zizq::backoff?

  • retention: Zizq::retention?

  • unique_key: String?

  • unique_while: Zizq::unique_scope?

  • batch: Zizq::batch?

  • return: self

Parameters:

  • type: (String) (defaults to: @type)
  • queue: (String) (defaults to: @queue)
  • payload: (Object) (defaults to: @payload)
  • priority: (Integer, nil) (defaults to: @priority)
  • delay: (Zizq::to_f, nil) (defaults to: @delay)
  • ready_at: (Zizq::to_f, nil) (defaults to: @ready_at)
  • retry_limit: (Integer, nil) (defaults to: @retry_limit)
  • backoff: (Zizq::backoff, nil) (defaults to: @backoff)
  • retention: (Zizq::retention, nil) (defaults to: @retention)
  • unique_key: (String, nil) (defaults to: @unique_key)
  • unique_while: (Zizq::unique_scope, nil) (defaults to: @unique_while)
  • batch: (Zizq::batch, nil) (defaults to: @batch)

Returns:

  • (self)


124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
# File 'lib/zizq/enqueue_request.rb', line 124

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,
  batch: @batch
)
  @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
  @batch = batch
  self
end