class Shoryuken::Worker::DefaultExecutor

Public Class Methods

perform_async(worker_class, body, options = {}) click to toggle source
# File lib/shoryuken/worker/default_executor.rb, line 5
def perform_async(worker_class, body, options = {})
  options[:message_attributes] ||= {}
  options[:message_attributes]['shoryuken_class'] = {
    string_value: worker_class.to_s,
    data_type: 'String'
  }

  options[:message_body] = body

  queue = options.delete(:queue) || worker_class.get_shoryuken_options['queue']

  Shoryuken::Client.queues(queue).send_message(options)
end
perform_in(worker_class, interval, body, options = {}) click to toggle source
# File lib/shoryuken/worker/default_executor.rb, line 19
def perform_in(worker_class, interval, body, options = {})
  interval = interval.to_f
  now = Time.now.to_f
  ts = (interval < 1_000_000_000 ? (now + interval).to_f : interval)

  delay = (ts - now).ceil

  raise 'The maximum allowed delay is 15 minutes' if delay > 15 * 60

  worker_class.perform_async(body, options.merge(delay_seconds: delay))
end