Class: SidekiqUniqueJobs::OnConflict::Reschedule
- Includes:
- JSON, Logging, Reflectable, SidekiqWorkerMethods
- Defined in:
- lib/sidekiq_unique_jobs/on_conflict/reschedule.rb
Overview
Strategy to reschedule job on conflict
Instance Attribute Summary
Attributes included from SidekiqWorkerMethods
Attributes inherited from Strategy
Instance Method Summary collapse
-
#call ⇒ Object
Create a new job from the current one.
-
#initialize(item, redis_pool = nil) ⇒ Reschedule
constructor
A new instance of Reschedule.
- #schedule_in ⇒ Object
Methods included from Reflectable
Methods included from JSON
dump_json, load_json, safe_load_json
Methods included from Logging
#build_message, included, #log_debug, #log_error, #log_fatal, #log_info, #log_warn, #logger, #logging_context, #with_configured_loggers_context, #with_logging_context
Methods included from SidekiqWorkerMethods
#after_unlock_hook, #default_job_options, #job_class_constantize, #job_method_defined?, #job_options, #sidekiq_job_class?
Methods inherited from Strategy
Methods included from Timing
clock_stamp, now_f, time_source, timed
Methods included from Script::Caller
call_script, debug_lua, do_call, extract_args, max_history, normalize_argv, now_f, redis_version
Constructor Details
#initialize(item, redis_pool = nil) ⇒ Reschedule
Returns a new instance of Reschedule.
15 16 17 18 |
# File 'lib/sidekiq_unique_jobs/on_conflict/reschedule.rb', line 15 def initialize(item, redis_pool = nil) super(item, redis_pool) self.job_class = item[CLASS] end |
Instance Method Details
#call ⇒ Object
Create a new job from the current one.
This will mess up sidekiq stats because a new job is created
22 23 24 25 26 27 28 29 30 31 32 |
# File 'lib/sidekiq_unique_jobs/on_conflict/reschedule.rb', line 22 def call if sidekiq_job_class? if job_class.set(queue: item["queue"].to_sym).perform_in(schedule_in, *item[ARGS]) reflect(:rescheduled, item) else reflect(:reschedule_failed, item) end else reflect(:unknown_sidekiq_worker, item) end end |
#schedule_in ⇒ Object
34 35 36 |
# File 'lib/sidekiq_unique_jobs/on_conflict/reschedule.rb', line 34 def schedule_in job_class.["schedule_in"] || 5 end |