UNPKG

bb-inspired

Version:

Core library for BB-inspired NestJS backend

53 lines (52 loc) 1.83 kB
export interface Message { id: string; type: string; timestamp: Date; payload: any; metadata?: Record<string, any>; } export interface MessageBrokerOptions { url: string; connectionOptions?: Record<string, any>; defaultExchange?: string; defaultQueue?: string; deadLetterExchange?: string; deadLetterQueue?: string; retryOptions?: { maxRetries: number; retryDelay: number; exponentialBackoff?: boolean; }; consumer?: { prefetch?: number; noAck?: boolean; }; producer?: { persistent?: boolean; mandatory?: boolean; }; } export interface MessageHandler<T = any> { handle(message: Message): Promise<void>; messageType: string; filter?(message: Message): boolean; } export interface MessagePublisher { publish(routingKey: string, message: Omit<Message, 'id' | 'timestamp'>): Promise<void>; publishToMany(routingKeys: string[], message: Omit<Message, 'id' | 'timestamp'>): Promise<void>; publishWithOptions(routingKey: string, message: Omit<Message, 'id' | 'timestamp'>, options: Record<string, any>): Promise<void>; } export interface MessageConsumer { subscribe(routingKey: string, handler: MessageHandler): Promise<void>; unsubscribe(routingKey: string, handler?: MessageHandler): Promise<void>; pause(): Promise<void>; resume(): Promise<void>; } export interface MessageBroker extends MessagePublisher, MessageConsumer { connect(): Promise<void>; disconnect(): Promise<void>; isConnected(): boolean; createExchange(name: string, type: string, options?: Record<string, any>): Promise<void>; createQueue(name: string, options?: Record<string, any>): Promise<void>; bindQueue(queue: string, exchange: string, routingKey: string): Promise<void>; }