class Totoro::BaseWorker
Public Class Methods
new()
click to toggle source
# File lib/totoro/base_worker.rb, line 16 def initialize setup end
setup(attrs)
click to toggle source
# File lib/totoro/base_worker.rb, line 5 def self.setup(attrs) prefix = attrs[:prefix] queue_name = attrs[:queue_name] define_method('setup') do raise(Totoro::NeedQueueNameError) if queue_name.nil? @prefix = prefix @queue_name = queue_name end end
Public Instance Methods
execute()
click to toggle source
# File lib/totoro/base_worker.rb, line 20 def execute Rails.logger.info 'Listening to the Rabbitmq' STDOUT.flush subscribe_service.subscribe(@queue_name) do |delivery_info, metadata, payload| Rails.logger.debug "#{@queue_name} received message" STDOUT.flush payload_hash = JSON.parse(payload).with_indifferent_access process(payload_hash, metadata, delivery_info) end handle_usr1_n_usr2 subscribe_service.channel.work_pool.join rescue SignalException puts 'Terminating process ..' subscribe_service.channel.work_pool.shutdown(true) puts 'Stopped.' end
process()
click to toggle source
# File lib/totoro/base_worker.rb, line 39 def process; end
Private Instance Methods
config()
click to toggle source
# File lib/totoro/base_worker.rb, line 53 def config @config ||= Totoro::Config.new(@prefix) end
handle_usr1_n_usr2()
click to toggle source
# File lib/totoro/base_worker.rb, line 43 def handle_usr1_n_usr2 %w[USR1 USR2].each do |signal| Signal.trap(signal) do puts "#{signal} received." handler = "on_#{signal.downcase}" send handler if respond_to?(handler) end end end
subscribe_service()
click to toggle source
# File lib/totoro/base_worker.rb, line 57 def subscribe_service @subscribe_service ||= Totoro::SubscribeService.new(config) end