@message-in-the-middle/core
Version:
Framework-agnostic middleware pattern for message queue processing. Core package with all middlewares.
59 lines • 1.89 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.TracingOutboundMiddleware = exports.TracingInboundMiddleware = void 0;
class TracingInboundMiddleware {
tracer;
serviceName;
constructor(tracer, serviceName = 'sqs-consumer') {
this.tracer = tracer;
this.serviceName = serviceName;
}
async process(context, next) {
const span = this.tracer.startSpan('sqs.process_message', {
messageId: context.raw?.MessageId,
});
span.setTag('service.name', this.serviceName);
span.setTag('message.id', context.raw?.MessageId);
span.setTag('message.attributes', context.attributes);
try {
await next();
span.setTag('status', 'success');
}
catch (error) {
span.setTag('status', 'error');
span.setError(error);
throw error;
}
finally {
span.finish();
}
}
}
exports.TracingInboundMiddleware = TracingInboundMiddleware;
class TracingOutboundMiddleware {
tracer;
serviceName;
constructor(tracer, serviceName = 'sqs-producer') {
this.tracer = tracer;
this.serviceName = serviceName;
}
async processOutbound(context, next) {
const span = this.tracer.startSpan('sqs.send_message');
span.setTag('service.name', this.serviceName);
span.setTag('message.size', JSON.stringify(context.message).length);
try {
await next();
span.setTag('status', 'success');
}
catch (error) {
span.setTag('status', 'error');
span.setError(error);
throw error;
}
finally {
span.finish();
}
}
}
exports.TracingOutboundMiddleware = TracingOutboundMiddleware;
//# sourceMappingURL=tracing.middleware.js.map