UNPKG

@message-queue-toolkit/metrics

Version:

Utilities for collecting metrics in message-queue-toolkit

23 lines (22 loc) 1.32 kB
import type { MessageMetricsManager, ProcessedMessageMetadata } from '@message-queue-toolkit/core'; import type { Metric } from 'prom-client'; import promClient from 'prom-client'; import type { MessageVersionGeneratingFunction, PrometheusMetricParams } from './types.ts'; /**w * Implementation of MessageMetricsManager for Prometheus */ export declare abstract class PrometheusMessageMetric<MessagePayload extends object, MetricType extends Metric> implements MessageMetricsManager<MessagePayload> { /** Fallbacks to null if metrics are disabled on app level */ protected readonly metric: MetricType; protected readonly messageVersionGeneratingFunction: MessageVersionGeneratingFunction<MessagePayload>; private readonly metricParams; /** * @param metricParams - metrics parameters (see PrometheusMetricParams) * @param client - use it to specify custom Prometheus client */ constructor(metricParams: PrometheusMetricParams<MessagePayload>, client?: typeof promClient); private registerMetric; private resolveMessageVersionGeneratingFunction; protected abstract createMetric(client: typeof promClient, metricParams: PrometheusMetricParams<MessagePayload>): MetricType; abstract registerProcessedMessage(metadata: ProcessedMessageMetadata<MessagePayload>): void; }