Skip to main content

unique_job_locking

🔒 Ensuring Unique Jobs with sidekiq-unique-jobs​

Avoid duplicate job enqueues by leveraging sidekiq-unique-jobs. This gem provides various lock strategies (until_executed, while_executing, etc.) to guarantee idempotency at enqueue or runtime.

# Gemfile
gem 'sidekiq-unique-jobs', '~> 7.1'

# app/workers/data_sync_worker.rb
class DataSyncWorker
include Sidekiq::Worker

sidekiq_options unique: :until_executed,
unique_args: ->(args) { [args.first['record_id']] },
lock_expiration: 2.hours

def perform(record_id)
RecordSyncService.new(record_id).sync!
end
end

# config/initializers/sidekiq.rb
SidekiqUniqueJobs.configure do |config|
config.lock_info = true # log lock acquisition/release details
end