Class: SidekiqUniqueJobs::OnConflict::Reject
- Inherits:
-
Strategy
- Object
- Strategy
- SidekiqUniqueJobs::OnConflict::Reject
show all
- Defined in:
- lib/sidekiq_unique_jobs/on_conflict/reject.rb
Overview
Strategy to send jobs to dead queue
Instance Attribute Summary
Attributes inherited from Strategy
#item
Instance Method Summary
collapse
Methods inherited from Strategy
#initialize, #replace?
Methods included from Logging
#log_debug, #log_error, #log_fatal, #log_info, #log_warn, #logger, #logging_context
Instance Method Details
#call ⇒ Object
10
11
12
13
|
# File 'lib/sidekiq_unique_jobs/on_conflict/reject.rb', line 10
def call
log_debug { "Rejecting job with jid: #{item[JID_KEY]}" }
send_to_deadset
end
|
#current_time ⇒ Object
63
64
65
|
# File 'lib/sidekiq_unique_jobs/on_conflict/reject.rb', line 63
def current_time
@current_time ||= Time.now.to_f
end
|
#deadset ⇒ Object
49
50
51
|
# File 'lib/sidekiq_unique_jobs/on_conflict/reject.rb', line 49
def deadset
@deadset ||= Sidekiq::DeadSet.new
end
|
#deadset_kill ⇒ Object
29
30
31
32
33
34
35
|
# File 'lib/sidekiq_unique_jobs/on_conflict/reject.rb', line 29
def deadset_kill
if kill_with_options?
kill_job_with_options
else
kill_job_without_options
end
end
|
#deadset_kill? ⇒ Boolean
25
26
27
|
# File 'lib/sidekiq_unique_jobs/on_conflict/reject.rb', line 25
def deadset_kill?
deadset.respond_to?(:kill)
end
|
#kill_job_with_options ⇒ Object
45
46
47
|
# File 'lib/sidekiq_unique_jobs/on_conflict/reject.rb', line 45
def kill_job_with_options
deadset.kill(payload, notify_failure: false)
end
|
#kill_job_without_options ⇒ Object
41
42
43
|
# File 'lib/sidekiq_unique_jobs/on_conflict/reject.rb', line 41
def kill_job_without_options
deadset.kill(payload)
end
|
#kill_with_options? ⇒ Boolean
37
38
39
|
# File 'lib/sidekiq_unique_jobs/on_conflict/reject.rb', line 37
def kill_with_options?
Sidekiq::DeadSet.instance_method(:kill).arity > 1
end
|
#payload ⇒ Object
67
68
69
|
# File 'lib/sidekiq_unique_jobs/on_conflict/reject.rb', line 67
def payload
@payload ||= Sidekiq.dump_json(item)
end
|
#push_to_deadset ⇒ Object
53
54
55
56
57
58
59
60
61
|
# File 'lib/sidekiq_unique_jobs/on_conflict/reject.rb', line 53
def push_to_deadset
Sidekiq.redis do |conn|
conn.multi do
conn.zadd("dead", current_time, payload)
conn.zremrangebyscore("dead", "-inf", current_time - Sidekiq::DeadSet.timeout)
conn.zremrangebyrank("dead", 0, -Sidekiq::DeadSet.max_jobs)
end
end
end
|
#send_to_deadset ⇒ Object
15
16
17
18
19
20
21
22
23
|
# File 'lib/sidekiq_unique_jobs/on_conflict/reject.rb', line 15
def send_to_deadset
log_info { "Adding dead #{item[CLASS_KEY]} job #{item[JID_KEY]}" }
if deadset_kill?
deadset_kill
else
push_to_deadset
end
end
|