class Shoryuken::Processor

Attributes

queue[R]
sqs_msg[R]

Public Class Methods

new(queue, sqs_msg) click to toggle source
# File lib/shoryuken/processor.rb, line 11
def initialize(queue, sqs_msg)
  @queue   = queue
  @sqs_msg = sqs_msg
end
process(queue, sqs_msg) click to toggle source
# File lib/shoryuken/processor.rb, line 7
def self.process(queue, sqs_msg)
  new(queue, sqs_msg).process
end

Public Instance Methods

process() click to toggle source
# File lib/shoryuken/processor.rb, line 16
def process
  return logger.error { "No worker found for #{queue}" } unless worker

  Shoryuken::Logging.with_context("#{worker_name(worker.class, sqs_msg, body)}/#{queue}/#{sqs_msg.message_id}") do
    worker.class.server_middleware.invoke(worker, queue, sqs_msg, body) do
      worker.perform(sqs_msg, body)
    end
  end
rescue Exception => ex
  Array(Shoryuken.exception_handlers).each { |handler| handler.call(ex, queue, sqs_msg) }

  raise
end

Private Instance Methods

body() click to toggle source
# File lib/shoryuken/processor.rb, line 40
def body
  @_body ||= sqs_msg.is_a?(Array) ? sqs_msg.map(&method(:parse_body)) : parse_body(sqs_msg)
end
parse_body(sqs_msg) click to toggle source
# File lib/shoryuken/processor.rb, line 44
def parse_body(sqs_msg)
  BodyParser.parse(worker_class, sqs_msg)
end
worker() click to toggle source
# File lib/shoryuken/processor.rb, line 32
def worker
  @_worker ||= Shoryuken.worker_registry.fetch_worker(queue, sqs_msg)
end
worker_class() click to toggle source
# File lib/shoryuken/processor.rb, line 36
def worker_class
  worker.class
end