Slide 8
Slide 8 text
二重起動の原因を調べる
# Removes a queued job instance
#
# @param [String] job_name The name of the job
# @param [Time] time The time at which the job was
cleared by the scheduler
#
# @return [Boolean] true if the job was registered,
false otherwise
def self.register_job_instance(job_name, time)
job_key = pushed_job_key(job_name)
registered, _ = Sidekiq.redis do |r|
r.pipelined do
r.zadd(job_key, time.to_i, time.to_i)
r.expire(job_key,
REGISTERED_JOBS_THRESHOLD_IN_SECONDS)
end
end
registered
end
ruby/2.7.0/gems/sidekiq-scheduler-3.1.0/lib/sidekiq-scheduler/redis_manager.rb
ジョブが重複しない制御があるのでは?
● Sidekiq-scheduler(gem)
○ Redisに一意なキーを作成(zadd)
○ 成功したらキューイング