Sha256: 024cd2661cf0dd4ee155366624fae72b2ea294cc4f0073a7a2a594a2f5e9eaa7

Contents?: true

Size: 954 Bytes

Versions: 8

Compression:

Stored size: 954 Bytes

Contents

require 'rosetta_queue/consumer_managers/base'
require 'mq'

module RosettaQueue
  
  class EventedManager < BaseManager
    
    def start
      EM.run {
        trap_interruptions

        begin
          @consumers.each do |key, consumer|
            RosettaQueue.logger.info("Running consumer #{key} in event machine...")
            consumer.receive
          end
        rescue Exception => e
          RosettaQueue.logger.error("Exception thrown: #{$!}\n" + e.backtrace.join("\n\t"))
        end
      }
    end
    
    def stop
      RosettaQueue.logger.info("Shutting down event machine...")
      EM.stop
    end

    private
    
      def trap_interruptions
        trap("INT") {
          RosettaQueue.logger.warn("Interrupt received.  Shutting down...")
          EM.stop
        }
        
        trap("TERM") {
          RosettaQueue.logger.warn("Interrupt received.  Shutting down...")
          EM.stop
        }
      end

  end
end

Version data entries

8 entries across 8 versions & 2 rubygems

Version Path
bmabey-rosetta_queue-0.1.3 lib/rosetta_queue/consumer_managers/evented.rb
bmabey-rosetta_queue-0.2.0 lib/rosetta_queue/consumer_managers/evented.rb
cwyckoff-rosetta_queue-0.1.4 lib/rosetta_queue/consumer_managers/evented.rb
cwyckoff-rosetta_queue-0.2.0 lib/rosetta_queue/consumer_managers/evented.rb
cwyckoff-rosetta_queue-0.2.1 lib/rosetta_queue/consumer_managers/evented.rb
cwyckoff-rosetta_queue-0.2.2 lib/rosetta_queue/consumer_managers/evented.rb
cwyckoff-rosetta_queue-0.3.0 lib/rosetta_queue/consumer_managers/evented.rb
cwyckoff-rosetta_queue-0.3.3 lib/rosetta_queue/consumer_managers/evented.rb