@pulzar/core
Version:
Next-generation Node.js framework for ultra-fast web applications with zero-reflection DI, GraphQL, WebSockets, events, and edge runtime support
91 lines • 2.15 kB
TypeScript
import { DeadLetterQueue, DLQEntry, DLQFilter, DLQStats, EventEnvelope } from "../types";
interface RedisConfig {
host?: string;
port?: number;
password?: string;
db?: number;
keyPrefix?: string;
maxRetriesPerEntry?: number;
defaultTTL?: number;
maxSize?: number;
retryStrategy?: "exponential" | "linear" | "fixed";
baseRetryDelay?: number;
}
export declare class RedisDLQ implements DeadLetterQueue {
private redis;
private config;
private connected;
constructor(config?: RedisConfig);
/**
* Initialize Redis connection
*/
connect(): Promise<void>;
/**
* Disconnect from Redis
*/
disconnect(): Promise<void>;
/**
* Add failed event to DLQ
*/
add(event: EventEnvelope, error: Error, originalSubject: string): Promise<void>;
/**
* List DLQ entries with pagination
*/
list(limit?: number, offset?: number): Promise<DLQEntry[]>;
/**
* Get specific DLQ entry
*/
get(id: string): Promise<DLQEntry | null>;
/**
* Retry specific DLQ entry
*/
retry(id: string): Promise<void>;
/**
* Retry all entries matching filter
*/
retryAll(filter?: DLQFilter): Promise<number>;
/**
* Remove DLQ entry
*/
remove(id: string): Promise<void>;
/**
* Clear all DLQ entries
*/
clear(): Promise<void>;
/**
* Get DLQ statistics
*/
getStats(): Promise<DLQStats>;
/**
* Calculate next retry time based on strategy
*/
private calculateNextRetry;
/**
* Check if entry matches filter
*/
private matchesFilter;
/**
* Serialize DLQ entry for Redis storage
*/
private serializeEntry;
/**
* Deserialize DLQ entry from Redis
*/
private deserializeEntry;
/**
* Generate Redis keys
*/
private getQueueKey;
private getEntryKey;
private getStatsKey;
/**
* Try to import Redis package
*/
private importRedis;
/**
* Generate unique ID
*/
private generateId;
}
export default RedisDLQ;
//# sourceMappingURL=redis-dlq.d.ts.map