class SidekiqUniqueJobs::OnConflict::Reject
@author Mikael Henriksson <mikael@mhenrixon.com>
Strategy to send jobs to dead queue
def call
def call log_info { "Adding dead #{item[CLASS]} job #{item[JID]}" } if deadset_kill? deadset_kill else push_to_deadset end end
def deadset
-
(Sidekiq::Deadset)
- >
Other tags:
- Api: - private
def deadset @deadset ||= Sidekiq::DeadSet.new end
def deadset_kill
-
(void)
-
Other tags:
- Api: - private
def deadset_kill if kill_with_options? kill_job_with_options else kill_job_without_options end end
def deadset_kill?
-
(true, false)
- depending on if Sidekiq::Deadset responds to kill
Other tags:
- Api: - private
def deadset_kill? deadset.respond_to?(:kill) end
def kill_job_with_options
-
(void)
-
Other tags:
- Api: - private
def kill_job_with_options deadset.kill(payload, notify_failure: false) end
def kill_job_without_options
-
(void)
-
Other tags:
- Api: - private
def kill_job_without_options deadset.kill(payload) end
def kill_with_options?
-
(false)
- when Sidekiq::Deadset#kill does not take multiple arguments -
(true)
- when Sidekiq::Deadset#kill takes more than 1 argument
Other tags:
- Api: - private
def kill_with_options? Sidekiq::DeadSet.instance_method(:kill).arity > 1 end
def payload
-
(String)
- a JSON formatted string
def payload @payload ||= dump_json(item) end
def push_to_deadset
-
(void)
-
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