UNPKG

@sailboat-computer/event-bus

Version:

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

129 lines 4.04 kB
/** * Dead letter queue implementation */ import { DeadLetterEvent, EventEnvelope } from './types'; /** * Dead letter queue manager */ export declare class DeadLetterQueueManager { /** * Dead letter queue events */ private events; /** * Maximum number of events to store in the dead letter queue */ private maxSize; /** * Maximum number of processing attempts before sending to dead letter queue */ private maxAttempts; /** * Number of events sent to the dead letter queue */ private totalEvents; /** * Last time an event was sent to the dead letter queue */ private lastEventTime; /** * Create a new dead letter queue manager * * @param maxSize - Maximum number of events to store in the dead letter queue * @param maxAttempts - Maximum number of processing attempts before sending to dead letter queue */ constructor(maxSize?: number, maxAttempts?: number); /** * Add an event to the dead letter queue * * @param event - Event envelope * @param error - Error that caused the event to be sent to the dead letter queue * @param attempts - Number of processing attempts * @returns Event ID */ addEvent(event: EventEnvelope, error: Error, attempts: number): string; /** * Get events from the dead letter queue * * @param eventType - Optional event type to filter by * @param limit - Maximum number of events to return * @returns Dead letter queue events */ getEvents(eventType?: string, limit?: number): DeadLetterEvent[]; /** * Get an event from the dead letter queue * * @param eventId - Event ID * @returns Dead letter event or null if not found */ getEvent(eventId: string): DeadLetterEvent | null; /** * Remove an event from the dead letter queue * * @param eventId - Event ID * @returns True if the event was removed, false if it wasn't found */ removeEvent(eventId: string): boolean; /** * Clear the dead letter queue * * @param eventType - Optional event type to filter by * @returns Number of events removed */ clearEvents(eventType?: string): number; /** * Get the number of events in the dead letter queue * * @returns Number of events */ getSize(): number; /** * Get the total number of events sent to the dead letter queue * * @returns Total number of events */ getTotalEvents(): number; /** * Get the last time an event was sent to the dead letter queue * * @returns Last event time or null if no events have been sent */ getLastEventTime(): Date | null; /** * Get the maximum number of processing attempts before sending to dead letter queue * * @returns Maximum number of attempts */ getMaxAttempts(): number; /** * Set the maximum number of processing attempts before sending to dead letter queue * * @param maxAttempts - Maximum number of attempts */ setMaxAttempts(maxAttempts: number): void; /** * Get the maximum number of events to store in the dead letter queue * * @returns Maximum number of events */ getMaxSize(): number; /** * Set the maximum number of events to store in the dead letter queue * * @param maxSize - Maximum number of events */ setMaxSize(maxSize: number): void; /** * Prune the oldest event from the dead letter queue */ private pruneOldestEvent; } /** * Create a new dead letter queue manager * * @param maxSize - Maximum number of events to store in the dead letter queue * @param maxAttempts - Maximum number of processing attempts before sending to dead letter queue * @returns Dead letter queue manager */ export declare function createDeadLetterQueueManager(maxSize?: number, maxAttempts?: number): DeadLetterQueueManager; //# sourceMappingURL=dead-letter-queue.d.ts.map