Sidekiq HOL (Head-of-Line)
Description
For high priority jobs, and you don't want to bypass the job queue, submit your Sidekiq job to the head of the queue.
Installation
Add this line to your application's Gemfile:
gem 'sidekiq-hol'Caveats
sidekiq-hol does not work with reliable_fetch, Sidekiq Enterprise Rate Limiting, or any other feature that dynamically reorders jobs within a Sidekiq queue.
Usage
Add a worker to process jobs asynchronously using Sidekiq-HOL:
class SomeWorker
include Sidekiq::Hol::Worker
def perform(name, count)
# do something
end
endCreate the asynchronous job:
SomeWorker.perform_hol_async 'maggie', 1Even though SomeWorker includes Sidekiq::Hol::Worker you can still use the regular perform_async method to submit a job at the end of a queue:
SomeWorker.perform_async 'lisa', 8Motivation
In one of the apps I was working on, some of the Sidekiq jobs were both long-running (they could take several minutes, or hours to complete) and numerous. If someone had wanted a job to be executed immediately, this might not have been possible since it would have been placed at the end of the queue, and earlier jobs could have taken weeks or months to finish.
sidekiq-hol solves this problem by allowing a user to submit high-priority jobs at the front of the job queue. Note, if all jobs were to be submitted using sidekiq-hol then this would defeat its purpose. Please use it judiciously!
Licence
See LICENCE