nats-micro
Version:
NATS micro compatible extra-lightweight microservice library
55 lines (54 loc) • 1.7 kB
TypeScript
import { Broker } from './broker.js';
import { MicroserviceInfo } from './types/index.js';
export type MonitorDiscoveryOptions = {
doNotClear: boolean;
};
type UserConnectEvent = {
id?: string;
server: {
name: string;
host: string;
id: string;
ver: string;
};
client: {
start: string;
host: string;
id: number;
acc?: string;
user?: string;
};
};
export type DiscoveredMicroservice = MicroserviceInfo & {
firstFoundAt: Date;
lastFoundAt: Date;
connection: UserConnectEvent | undefined;
};
export type MonitorOptions = {
discoveryTimeout: number;
};
export declare class Monitor {
private readonly broker;
private readonly systemBroker?;
private readonly options;
readonly services: DiscoveredMicroservice[];
private discoveryInterval;
private readonly connections;
private readonly ee;
constructor(broker: Broker, systemBroker?: Broker | undefined, options?: Partial<MonitorOptions>);
private discoverConnections;
private handleServiceRegistration;
private handleAccountConnect;
private handleAccountDisconnect;
private emit;
on(event: 'added' | 'removed', listener: (service: MicroserviceInfo) => void): void;
on(event: 'change', listener: (services: MicroserviceInfo[]) => void): void;
private getServiceClientId;
private getServiceConnectionInfo;
private saveService;
private removeService;
discover(timeout?: number, options?: Partial<MonitorDiscoveryOptions>): Promise<void>;
startPeriodicDiscovery(interval: number, discoveryTimeout?: number): void;
stopPeriodicDiscovery(): void;
}
export {};