UNPKG

@message-queue-toolkit/metrics

Version:

Utilities for collecting metrics in message-queue-toolkit

23 lines (22 loc) 1.37 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, MetricParams extends PrometheusMetricParams<MessagePayload> = PrometheusMetricParams<MessagePayload>> 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: MetricParams, client?: typeof promClient); private registerMetric; private resolveMessageVersionGeneratingFunction; protected abstract createMetric(client: typeof promClient, metricParams: MetricParams): MetricType; abstract registerProcessedMessage(metadata: ProcessedMessageMetadata<MessagePayload>): void; }