module NewRelic::Agent::Instrumentation::Bunny::Queue
Public Instance Methods
pop_with_tracing() { || ... }
click to toggle source
# File lib/new_relic/agent/instrumentation/bunny/instrumentation.rb, line 67 def pop_with_tracing NewRelic::Agent.record_instrumentation_invocation(INSTRUMENTATION_NAME) bunny_error, delivery_info, message_properties, _payload = nil, nil, nil, nil begin t0 = Process.clock_gettime(Process::CLOCK_REALTIME) msg = yield delivery_info, message_properties, _payload = msg rescue StandardError => error bunny_error = error end begin exch_name, exch_type = if delivery_info [exchange_name(delivery_info.exchange), exchange_type(delivery_info, channel)] else [exchange_name(NewRelic::EMPTY_STR), exchange_type({}, channel)] end segment = NewRelic::Agent::Messaging.start_amqp_consume_segment( library: LIBRARY, destination_name: exch_name, delivery_info: (delivery_info || {}), message_properties: (message_properties || {headers: {}}), exchange_type: exch_type, queue_name: name, start_time: t0 ) rescue => e NewRelic::Agent.logger.error('Error starting message broker segment in Bunny::Queue#pop', e) else if bunny_error segment.notice_error(bunny_error) raise bunny_error end ensure ::NewRelic::Agent::Transaction::Segment.finish(segment) end msg end
purge_with_tracing() { || ... }
click to toggle source
# File lib/new_relic/agent/instrumentation/bunny/instrumentation.rb, line 111 def purge_with_tracing NewRelic::Agent.record_instrumentation_invocation(INSTRUMENTATION_NAME) begin type = server_named? ? :temporary_queue : :queue segment = NewRelic::Agent::Tracer.start_message_broker_segment( action: :purge, library: LIBRARY, destination_type: type, destination_name: name ) rescue => e NewRelic::Agent.logger.error('Error starting message broker segment in Bunny::Queue#purge', e) yield else NewRelic::Agent::Tracer.capture_segment_error(segment) do yield end ensure ::NewRelic::Agent::Transaction::Segment.finish(segment) end end