class ActiveJob::QueueAdapters::SidekiqAdapter
Rails.application.config.active_job.queue_adapter = :sidekiq
To use Sidekiq set the queue_adapter config to :sidekiq
.
Read more about Sidekiq here.
processing dead simple.
require Rails but will integrate tightly with it to make background
handle many jobs at the same time in the same process. It does not
Simple, efficient background processing for Ruby. Sidekiq uses threads to
= Sidekiq adapter for Active Job
def enqueue(job) # :nodoc:
def enqueue(job) # :nodoc: job.provider_job_id = JobWrapper.set( wrapped: job.class, queue: job.queue_name ).perform_async(job.serialize) end
def enqueue_all(jobs) # :nodoc:
def enqueue_all(jobs) # :nodoc: enqueued_count = 0 jobs.group_by(&:class).each do |job_class, same_class_jobs| same_class_jobs.group_by(&:queue_name).each do |queue, same_class_and_queue_jobs| immediate_jobs, scheduled_jobs = same_class_and_queue_jobs.partition { |job| job.scheduled_at.nil? } if immediate_jobs.any? jids = Sidekiq::Client.push_bulk( "class" => JobWrapper, "wrapped" => job_class, "queue" => queue, "args" => immediate_jobs.map { |job| [job.serialize] }, ) enqueued_count += jids.compact.size end if scheduled_jobs.any? jids = Sidekiq::Client.push_bulk( "class" => JobWrapper, "wrapped" => job_class, "queue" => queue, "args" => scheduled_jobs.map { |job| [job.serialize] }, "at" => scheduled_jobs.map { |job| job.scheduled_at&.to_f } ) enqueued_count += jids.compact.size end end end enqueued_count end
def enqueue_at(job, timestamp) # :nodoc:
def enqueue_at(job, timestamp) # :nodoc: job.provider_job_id = JobWrapper.set( wrapped: job.class, queue: job.queue_name, ).perform_at(timestamp, job.serialize) end