Class: Msgr::Binding
Instance Attribute Summary collapse
-
#connection ⇒ Object
readonly
Returns the value of attribute connection.
-
#dispatcher ⇒ Object
readonly
Returns the value of attribute dispatcher.
-
#queue ⇒ Object
readonly
Returns the value of attribute queue.
-
#route ⇒ Object
readonly
Returns the value of attribute route.
-
#subscription ⇒ Object
readonly
Returns the value of attribute subscription.
Instance Method Summary collapse
- #delete ⇒ Object
-
#initialize(connection, route, dispatcher) ⇒ Binding
constructor
A new instance of Binding.
- #release ⇒ Object
Methods included from Logging
Constructor Details
#initialize(connection, route, dispatcher) ⇒ Binding
Returns a new instance of Binding.
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
# File 'lib/msgr/binding.rb', line 8 def initialize(connection, route, dispatcher) @connection = connection @route = route @dispatcher = dispatcher @queue = connection.queue(route.name) route.keys.each do |key| log(:debug) { "Bind #{key} to #{queue.name}." } queue.bind connection.exchange, routing_key: key end @subscription = queue.subscribe(ack: true) do |*args| begin dispatcher.call Message.new(connection, *args, route) rescue => err log(:error) do "Rescued error from subscribe: #{err.class.name}: #{err}\n#{err.backtrace.join("\n")}" end end end end |
Instance Attribute Details
#connection ⇒ Object (readonly)
Returns the value of attribute connection.
6 7 8 |
# File 'lib/msgr/binding.rb', line 6 def connection @connection end |
#dispatcher ⇒ Object (readonly)
Returns the value of attribute dispatcher.
6 7 8 |
# File 'lib/msgr/binding.rb', line 6 def dispatcher @dispatcher end |
#queue ⇒ Object (readonly)
Returns the value of attribute queue.
6 7 8 |
# File 'lib/msgr/binding.rb', line 6 def queue @queue end |
#route ⇒ Object (readonly)
Returns the value of attribute route.
6 7 8 |
# File 'lib/msgr/binding.rb', line 6 def route @route end |
#subscription ⇒ Object (readonly)
Returns the value of attribute subscription.
6 7 8 |
# File 'lib/msgr/binding.rb', line 6 def subscription @subscription end |
Instance Method Details
#delete ⇒ Object
35 36 37 38 |
# File 'lib/msgr/binding.rb', line 35 def delete release queue.delete end |
#release ⇒ Object
31 32 33 |
# File 'lib/msgr/binding.rb', line 31 def release subscription.cancel end |