@message-queue-toolkit/metrics
Version:
Utilities for collecting metrics in message-queue-toolkit
23 lines (22 loc) • 1.32 kB
TypeScript
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;
}