Class: Wildcloud::Logger::Middleware::Amqp

Inherits:
Object
  • Object
show all
Defined in:
lib/wildcloud/logger/middleware/amqp.rb

Instance Method Summary collapse

Constructor Details

#initialize(app, options = {}) ⇒ Amqp

Returns a new instance of Amqp.



20
21
22
23
24
25
26
# File 'lib/wildcloud/logger/middleware/amqp.rb', line 20

def initialize(app, options = {})
  @app = app
  @exchange = options[:exchange]
  @key = options[:key] ? options[:key] : :json_encoded
  @options = options
  @options[:call_routing_key] = true if @options[:routing_key].respond_to?(:call)
end

Instance Method Details

#call(msg) ⇒ Object



28
29
30
31
32
33
34
35
36
37
38
39
40
41
# File 'lib/wildcloud/logger/middleware/amqp.rb', line 28

def call(msg)
  options = {}
  case
    when @options[:call_routing_key]
      key = @options[:routing_key].call(msg)
      options[:routing_key] = key if key
    when @options[:routing_key]
      options[:routing_key] = @options[:routing_key]
    else
      options[:routing_key] = ''
  end
  @exchange.publish(msg[@key], options)
  @app.call(msg)
end