class Rjob::Scripts::EnqueueJob

Public Instance Methods

arg_params() click to toggle source
# File lib/rjob/scripts/enqueue_job.rb, line 4
def arg_params
  %i(prefix bucket_count job_data)
end
lua_script() click to toggle source
# File lib/rjob/scripts/enqueue_job.rb, line 8
  def lua_script
    <<~LUA
      local prefix = ARGV[1]
      local bucket_count = tonumber(ARGV[2])
      local job_data = ARGV[3]
      local r = redis
      local job_id = r.call('incr', prefix .. ':next')
      local bucket = job_id % bucket_count
      r.call('lpush', prefix .. ':jobs:' .. bucket, job_id .. '!0!' .. job_data)
      r.call('publish', prefix .. ':jobs', tostring(bucket))
      return job_id
    LUA
  end