UNPKG

@sailboat-computer/event-bus

Version:

Standardized event bus for sailboat computer v3 with resilience features and offline capabilities

137 lines 3.25 kB
/** * Redis adapter for the event bus * Uses Redis Streams for event persistence and consumer groups for event distribution */ import { RedisAdapterConfig, EventHandler, EventEnvelope, Subscription } from '../types'; import { BaseAdapter } from './base-adapter'; /** * Redis adapter for the event bus */ export declare class RedisAdapter extends BaseAdapter { /** * Redis client */ private client; /** * Consumer group name */ private consumerGroup; /** * Consumer name */ private consumerName; /** * Maximum batch size for event processing */ private maxBatchSize; /** * Polling interval in milliseconds */ private pollInterval; /** * Polling intervals by event type */ private pollingIntervals; /** * Reconnection options */ private reconnectOptions; /** * Initialize the adapter * * @param config - Redis adapter configuration */ initialize(config: RedisAdapterConfig): Promise<void>; /** * Shutdown the adapter */ shutdown(): Promise<void>; /** * Publish an event * * @param event - Event envelope * @returns Event ID */ publish<T>(event: EventEnvelope): Promise<string>; /** * Subscribe to an event * * @param eventType - Event type * @param handler - Event handler * @returns Subscription */ subscribe<T>(eventType: string, handler: EventHandler<T>): Promise<Subscription>; /** * Acknowledge an event * * @param eventId - Event ID * @param eventType - Event type */ acknowledgeEvent(eventId: string, eventType: string): Promise<void>; /** * Create a consumer group for a stream * * @param streamName - Stream name */ private createConsumerGroup; /** * Start polling for events * * @param streamName - Stream name */ private startPolling; /** * Poll events from a stream * * @param streamName - Stream name */ private pollEvents; /** * Process events from a stream * * @param streamName - Stream name * @param events - Events */ private processEvents; /** * Convert an event to a Redis stream entry * * @param event - Event envelope * @returns Redis stream entry */ private eventToStreamEntry; /** * Convert a Redis stream entry to an event * * @param eventId - Event ID * @param fields - Stream entry fields * @param eventType - Event type * @returns Event envelope */ private streamEntryToEvent; /** * Get stream name from event type * * @param eventType - Event type * @returns Stream name */ private getStreamName; /** * Get event type from stream name * * @param streamName - Stream name * @returns Event type */ private getEventTypeFromStream; /** * Wait for Redis connection */ private waitForConnection; } /** * Create a new Redis adapter * * @returns Redis adapter */ export declare function createRedisAdapter(): RedisAdapter; //# sourceMappingURL=redis-adapter.d.ts.map