UNPKG

atatus-nodejs

Version:

Atatus APM agent for Node.js

58 lines (47 loc) 1.58 kB
'use strict'; const semver = require('semver'); const constants = require('../../../constants'); const shimmer = require('../../shimmer'); const NAME = 'RabbitMQ'; const TYPE = 'connection'; const SUBTYPE = 'rabbitmq'; module.exports = function instrumentAMQP(mod, agent, { version, enabled }) { if (!enabled || !semver.satisfies(version, '>=0.5 <=0.11')) { return mod; } const config = agent._conf; const ins = agent._instrumentation; agent.logger.debug('shimming AMQP.prototype.connect'); shimmer.wrap(mod, 'connect', wrapperConnect); return mod; function wrapperConnect(orgsConnect) { return async function wrappedConnect() { const args = arguments const span = ins.createSpan( `${NAME} Connect`, TYPE, SUBTYPE, 'connect', { exitSpan: true }, ); agent.logger.debug('AMQP connect called with args:', args); if (!span) { return orgsConnect.apply(this, args) } let result, err; try { result = orgsConnect.apply(this, args) } catch (e) { err = e agent.logger.error(`Error in connection of rabbitmq:`, err); throw e } finally { span.setOutcome( err ? constants.OUTCOME_FAILURE : constants.OUTCOME_SUCCESS, ); span.end(); } return result; } } }