@logistically/events-nestjs
Version:
NestJS integration for @logistically/events v3 - Event-driven architecture with Redis Streams
69 lines (68 loc) • 1.92 kB
TypeScript
import { OnModuleInit } from '@nestjs/common';
import { EventMetadataExplorer } from './event-metadata-explorer.service';
import { EventDiscoveryService } from './event-discovery.service';
export interface PerformanceMetrics {
cache: {
hits: number;
misses: number;
hitRate: number;
};
discovery: {
pending: number;
registered: number;
retryCount: number;
processingTime: number;
};
memory: {
heapUsed: number;
heapTotal: number;
external: number;
};
timing: {
lastDiscoveryRun: number;
averageProcessingTime: number;
totalRuns: number;
};
}
export declare class PerformanceMonitorService implements OnModuleInit {
private readonly metadataExplorer;
private readonly eventDiscoveryService;
private readonly logger;
private readonly startTime;
private processingTimes;
private lastDiscoveryRun;
constructor(metadataExplorer: EventMetadataExplorer, eventDiscoveryService: EventDiscoveryService);
onModuleInit(): Promise<void>;
/**
* Get comprehensive performance metrics
*/
getMetrics(): PerformanceMetrics;
/**
* Record processing time for performance tracking
*/
recordProcessingTime(processingTime: number): void;
/**
* Record discovery run completion
*/
recordDiscoveryRun(): void;
/**
* Get performance summary for logging
*/
getPerformanceSummary(): string;
/**
* Start periodic performance reporting
*/
private startPerformanceReporting;
/**
* Check for performance warnings and log them
*/
private checkPerformanceWarnings;
/**
* Reset performance metrics (useful for testing)
*/
resetMetrics(): void;
/**
* Get performance recommendations based on current metrics
*/
getRecommendations(): string[];
}