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 logger.error { "Processor failed: #{ex.message}" } logger.error { ex.backtrace.join("\n") } unless ex.backtrace.nil? raise end
Private Instance Methods
body()
click to toggle source
# File lib/shoryuken/processor.rb, line 41 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 45 def parse_body(sqs_msg) BodyParser.parse(worker_class, sqs_msg) end
worker()
click to toggle source
# File lib/shoryuken/processor.rb, line 33 def worker @_worker ||= Shoryuken.worker_registry.fetch_worker(queue, sqs_msg) end
worker_class()
click to toggle source
# File lib/shoryuken/processor.rb, line 37 def worker_class worker.class end