UNPKG

broker-lib

Version:

Multi-Broker Message Bus with Multi-Topic Support

100 lines 4.19 kB
import { BrokerConfig, BrokerType } from './config'; import { MessageHandler, PublishOptions, SubscribeOptions } from './types'; import { EventEmitter } from 'events'; interface ReconnectionConfig { enabled: boolean; maxAttempts: number; initialDelay: number; maxDelay: number; backoffMultiplier: number; } export interface SubscriptionOptions { topic: string; fromBeginning?: boolean; qos?: number; autoAck?: boolean; } export interface SubscriptionCallback { (message: any): void; } export interface TopicHandlerMapping { topic: string; handler: SubscriptionCallback; options?: Omit<SubscriptionOptions, 'topic'>; } export interface BrokerEnvConfig { BROKER_TYPE?: string; BROKER_CLIENT_ID?: string; MQTT_URL?: string; KAFKA_BROKERS?: string; KAFKA_GROUP_ID?: string; PROJECT_ID?: string; GCP_KEY_FILENAME?: string; [key: string]: string | undefined; } export declare function createBrokerConfigFromEnv(env: BrokerEnvConfig, defaultClientId?: string): BrokerConfig; export declare function createSubscriptionManagerFromEnv(env: BrokerEnvConfig, defaultClientId?: string, logger?: Console): SubscriptionManager; export declare function createBrokerManagerFromEnv(env: BrokerEnvConfig, defaultClientId?: string): BrokerManager; export declare function createBrokerConfigFromAppEnv(defaultClientId?: string): BrokerConfig; export declare function createSubscriptionManagerFromAppEnv(defaultClientId?: string, logger?: Console): SubscriptionManager; export declare function createBrokerManagerFromAppEnv(defaultClientId?: string): BrokerManager; export declare class SubscriptionManager extends EventEmitter { private brokerManager; private logger; private topicHandlers; constructor(brokerConfig: BrokerConfig, logger?: Console); connect(): Promise<void>; disconnect(): Promise<void>; subscribe(options: SubscriptionOptions, callback: SubscriptionCallback): Promise<void>; subscribeMultiple(mappings: TopicHandlerMapping[]): Promise<void>; subscribeToTopics(topics: string[], callback: SubscriptionCallback, options?: Omit<SubscriptionOptions, 'topic'>): Promise<void>; publish(topic: string, message: any, options?: PublishOptions): Promise<void>; private ensureConnection; getSubscribedTopics(): string[]; getHandler(topic: string): SubscriptionCallback | undefined; removeHandler(topic: string): boolean; clearHandlers(): void; getBrokerManager(): BrokerManager; isConnected(): boolean; getConnectionState(): 'disconnected' | 'connecting' | 'connected' | 'error'; getReconnectAttempts(): number; setReconnectionConfig(config: Partial<ReconnectionConfig>): void; getBrokerType(): BrokerType; startPolling(topics: string[], intervalMs?: number): Promise<void>; stopPolling(): Promise<void>; isPolling(): boolean; } export declare class BrokerManager extends EventEmitter { private broker; private config; private messageHandler?; private connectionState; private reconnectionConfig; private reconnectAttempts; private reconnectTimeout?; private isReconnecting; private pendingOperations; constructor(config: BrokerConfig); private createBroker; private handleDisconnection; private handleReconnectFailure; private scheduleReconnect; private attemptReconnect; private processPendingOperations; private executeWithReconnection; private isConnectionError; connect(): Promise<void>; publish(topic: string, message: string | Buffer, options?: PublishOptions): Promise<void>; subscribe(topics: string[], handler?: MessageHandler, options?: SubscribeOptions): Promise<void>; disconnect(): Promise<void>; reconnect(): Promise<void>; setReconnectionConfig(config: Partial<ReconnectionConfig>): void; isConnected(): boolean; getConnectionState(): 'disconnected' | 'connecting' | 'connected' | 'error'; getReconnectAttempts(): number; getBrokerType(): BrokerType; setMessageHandler(handler: MessageHandler): void; } export * from './types'; export * from './config'; //# sourceMappingURL=index.d.ts.map