UNPKG

@message-in-the-middle/core

Version:

Framework-agnostic middleware pattern for message queue processing. Core package with all middlewares.

59 lines 2.31 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.MetricsOutboundMiddleware = exports.MetricsInboundMiddleware = void 0; class MetricsInboundMiddleware { metricsCollector; prefix; constructor(metricsCollector, options = {}) { this.metricsCollector = metricsCollector; this.prefix = options.prefix ?? 'sqs.inbound'; } async process(context, next) { const startTime = Date.now(); this.metricsCollector.increment(`${this.prefix}.received`); try { await next(); const duration = Date.now() - startTime; this.metricsCollector.timing(`${this.prefix}.processing_time`, duration); this.metricsCollector.increment(`${this.prefix}.success`); context.metadata.processingTime = duration; } catch (error) { const duration = Date.now() - startTime; this.metricsCollector.timing(`${this.prefix}.processing_time`, duration); this.metricsCollector.increment(`${this.prefix}.error`, { error_type: error.name, }); throw error; } } } exports.MetricsInboundMiddleware = MetricsInboundMiddleware; class MetricsOutboundMiddleware { metricsCollector; prefix; constructor(metricsCollector, options = {}) { this.metricsCollector = metricsCollector; this.prefix = options.prefix ?? 'sqs.outbound'; } async processOutbound(context, next) { const startTime = Date.now(); const messageSize = JSON.stringify(context.message).length; this.metricsCollector.increment(`${this.prefix}.sent`); this.metricsCollector.gauge(`${this.prefix}.message_size`, messageSize); try { await next(); const duration = Date.now() - startTime; this.metricsCollector.timing(`${this.prefix}.send_time`, duration); this.metricsCollector.increment(`${this.prefix}.success`); } catch (error) { this.metricsCollector.increment(`${this.prefix}.error`, { error_type: error.name, }); throw error; } } } exports.MetricsOutboundMiddleware = MetricsOutboundMiddleware; //# sourceMappingURL=metrics.middleware.js.map