class SidekiqUniqueJobs::OnConflict::Reject
Strategy
to send jobs to dead queue
@author Mikael Henriksson <mikael@mhenrixon.com>
Public Instance Methods
Send jobs to dead queue
# File lib/sidekiq_unique_jobs/on_conflict/reject.rb, line 12 def call log_info { "Adding dead #{item[CLASS]} job #{item[JID]}" } if deadset_kill? deadset_kill else push_to_deadset end end
An instance of Sidekiq::Deadset @api private
@return [Sidekiq::Deadset]>
# File lib/sidekiq_unique_jobs/on_conflict/reject.rb, line 87 def deadset @deadset ||= Sidekiq::DeadSet.new end
Use Sidekiqs built in Sidekiq::DeadSet#kill
to get rid of the job
@api private
@return [void]
# File lib/sidekiq_unique_jobs/on_conflict/reject.rb, line 41 def deadset_kill if kill_with_options? kill_job_with_options else kill_job_without_options end end
Sidekiq
version compatibility check @api private
@return [true, false] depending on if Sidekiq::Deadset responds to kill
# File lib/sidekiq_unique_jobs/on_conflict/reject.rb, line 29 def deadset_kill? deadset.respond_to?(:kill) end
Executes the kill instructions with arguments @api private
@return [void]
# File lib/sidekiq_unique_jobs/on_conflict/reject.rb, line 77 def kill_job_with_options deadset.kill(payload, notify_failure: false) end
Executes the kill instructions without arguments @api private
@return [void]
# File lib/sidekiq_unique_jobs/on_conflict/reject.rb, line 67 def kill_job_without_options deadset.kill(payload) end
Sidekiq
version compatibility check @api private
@return [true] when Sidekiq::Deadset#kill takes more than 1 argument @return [false] when Sidekiq::Deadset#kill does not take multiple arguments
# File lib/sidekiq_unique_jobs/on_conflict/reject.rb, line 57 def kill_with_options? Sidekiq::DeadSet.instance_method(:kill).arity > 1 end
Used for compatibility with older Sidekiq
versions
@return [void]
# File lib/sidekiq_unique_jobs/on_conflict/reject.rb, line 97 def push_to_deadset redis do |conn| conn.multi do conn.zadd("dead", now_f, payload) conn.zremrangebyscore("dead", "-inf", now_f - Sidekiq::DeadSet.timeout) conn.zremrangebyrank("dead", 0, -Sidekiq::DeadSet.max_jobs) end end end