Sha256: e1a0acd242af1f2cffcaa2b01aeb61965463aa62b26d770addf9a6b90cc7372d

Contents?: true

Size: 741 Bytes

Versions: 7

Compression:

Stored size: 741 Bytes

Contents

module Msgr

  # The Dispatcher receives incoming messages,
  # process them through a middleware stack and
  # delegate them to a new and fresh consumer instance.
  #
  class Dispatcher
    include Logging

    def call(message)
      dispatch message

      # Acknowledge message unless it is already acknowledged.
      message.ack unless message.acked?

      log(:warn) { "Message not acked!" } unless message.acked?
    end

    def dispatch(message)
      consumer_class = Object.const_get message.route.consumer

      log(:debug) { "Dispatch message to #{consumer_class.name}" }

      consumer_class.new.dispatch message
    rescue => error
      log(:error) { error }
    end

    def to_s
      self.class.name
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
msgr-0.4.1 lib/msgr/dispatcher.rb
msgr-0.4.0 lib/msgr/dispatcher.rb
msgr-0.3.0 lib/msgr/dispatcher.rb
msgr-0.2.1 lib/msgr/dispatcher.rb
msgr-0.2.0 lib/msgr/dispatcher.rb
msgr-0.1.1 lib/msgr/dispatcher.rb
msgr-0.1.0 lib/msgr/dispatcher.rb