class Sqreen::Ecosystem::Messaging::Bunny

Public Instance Methods

setup() click to toggle source
# File lib/sqreen/ecosystem/messaging/bunny.rb, line 20
def setup
  advice_send = wrap_for_interest(ModuleApi::Tracing::ProducerData, &method(:after_send_advice))
  advice_receive = wrap_for_interest(ModuleApi::Tracing::ConsumerData, &method(:after_receive_advice))
  advice_receive_consumer = wrap_for_interest(ModuleApi::Tracing::ConsumerData, &method(:after_receive_advice_consumer))
  instrument 'Bunny::Queue#publish', after: advice_send
  instrument 'Bunny::Queue#pop',     after: advice_receive
  instrument 'Bunny::Consumer#call', after: advice_receive_consumer
end

Private Instance Methods

after_receive_advice(call, _ball) click to toggle source

@param [Sqreen::Graft::CallbackCall] call

# File lib/sqreen/ecosystem/messaging/bunny.rb, line 39
def after_receive_advice(call, _ball)
  return if call.raised

  create_signal(call.instance, ModuleApi::Tracing::ConsumerData)
end
after_receive_advice_consumer(call, _ball) click to toggle source

@param [Sqreen::Graft::CallbackCall] call

# File lib/sqreen/ecosystem/messaging/bunny.rb, line 46
def after_receive_advice_consumer(call, _ball)
  return if call.raised

  queue = call.instance.queue
  create_signal(queue, ModuleApi::Tracing::ConsumerData)
end
after_send_advice(call, _ball) click to toggle source

@param [Sqreen::Graft::CallbackCall] call

# File lib/sqreen/ecosystem/messaging/bunny.rb, line 32
def after_send_advice(call, _ball)
  return if call.raised

  create_signal(call.instance, ModuleApi::Tracing::ProducerData)
end
create_signal(q, clazz) click to toggle source

@param [Bunny::Queue] q

# File lib/sqreen/ecosystem/messaging/bunny.rb, line 54
def create_signal(q, clazz)
  conn = q.channel.connection

  clazz.new(
    message_type: :amqp,
    host: conn.host,
    topic: q.name,
  )
end