@sailboat-computer/event-bus
Version:
Standardized event bus for sailboat computer v3 with resilience features and offline capabilities
129 lines • 4.04 kB
TypeScript
/**
* 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