class Msgr::Binding
Attributes
channel[R]
connection[R]
dispatcher[R]
queue[R]
route[R]
subscription[R]
Public Class Methods
new(connection, route, dispatcher)
click to toggle source
# File lib/msgr/binding.rb, line 16 def initialize(connection, route, dispatcher) @connection = connection @channel = connection.channel(prefetch: route.prefetch) @route = route @dispatcher = dispatcher @queue = @channel.queue(route.name) route.keys.each do |key| log(:debug) { "Bind #{key} to #{queue.name}." } queue.bind @channel.exchange, routing_key: key end subscribe end
Public Instance Methods
delete()
click to toggle source
# File lib/msgr/binding.rb, line 36 def delete release queue.delete end
purge(release: true)
click to toggle source
# File lib/msgr/binding.rb, line 41 def purge(release: true) self.release if release queue.purge subscribe if release end
release()
click to toggle source
# File lib/msgr/binding.rb, line 32 def release subscription.cancel end
Private Instance Methods
subscribe()
click to toggle source
# File lib/msgr/binding.rb, line 51 def subscribe @subscription = queue.subscribe(manual_ack: true) do |*args| dispatcher.call Message.new(channel, *args, route) rescue StandardError => e log(:error) do "Rescued error from subscribe: #{e.class.name}: " \ "#{e}\n#{e.backtrace.join("\n")}" end end end