Class: ActiveJob::QueueAdapters::ZizqAdapter
- Inherits:
-
Object
- Object
- ActiveJob::QueueAdapters::ZizqAdapter
- Defined in:
- lib/active_job/queue_adapters/zizq_adapter.rb
Overview
ActiveJob adapter for Zizq jobs.
To use, set the queue adapter in your Rails configuration:
# config/application.rb
config.active_job.queue_adapter = :zizq
And configure the Zizq client to dispatch to ActiveJob:
# config/initializers/zizq.rb
Zizq.configure do |c|
c.url = "http://localhost:7890"
c.dispatcher = ActiveJob::QueueAdapters::ZizqAdapter::Dispatcher
end
To use Zizq features (unique jobs, backoff, retention) with ActiveJob classes, you can extend ‘Zizq::ActiveJobConfig` in your classes:
class SendEmailJob < ApplicationJob
extend Zizq::ActiveJobConfig
zizq_unique true, scope: :active
zizq_backoff exponent: 4.0, base: 15, jitter: 30
end
Defined Under Namespace
Modules: Dispatcher
Instance Method Summary collapse
-
#enqueue(job) ⇒ Object
Enqueue a job for immediate execution.
-
#enqueue_all(jobs) ⇒ Object
Enqueue multiple jobs atomically in a single bulk request.
-
#enqueue_at(job, timestamp) ⇒ Object
Enqueue a job for execution at a specific time.
Instance Method Details
#enqueue(job) ⇒ Object
Enqueue a job for immediate execution.
35 36 37 38 39 40 |
# File 'lib/active_job/queue_adapters/zizq_adapter.rb', line 35 def enqueue(job) result = Zizq.enqueue_raw(**build_enqueue_request(job).to_enqueue_params) job.provider_job_id = result.id job.successfully_enqueued = true result end |
#enqueue_all(jobs) ⇒ Object
Enqueue multiple jobs atomically in a single bulk request.
Called by ‘ActiveJob.perform_all_later` (Rails 7.1+). Returns the number of successfully enqueued jobs.
55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 |
# File 'lib/active_job/queue_adapters/zizq_adapter.rb', line 55 def enqueue_all(jobs) results = Zizq.enqueue_bulk do |b| jobs.each do |job| b.enqueue_raw(**build_enqueue_request(job).to_enqueue_params) end end jobs.zip(results).each do |job, result| job.provider_job_id = result.id job.successfully_enqueued = true end jobs.size rescue => e jobs.each { |job| job.successfully_enqueued = false } raise e end |
#enqueue_at(job, timestamp) ⇒ Object
Enqueue a job for execution at a specific time.
43 44 45 46 47 48 49 |
# File 'lib/active_job/queue_adapters/zizq_adapter.rb', line 43 def enqueue_at(job, ) job.scheduled_at = result = Zizq.enqueue_raw(**build_enqueue_request(job).to_enqueue_params) job.provider_job_id = result.id job.successfully_enqueued = true result end |