rabbitmq-enterprise-toolkit
Version:
🚀 Enterprise-grade RabbitMQ wrapper for Node.js & TypeScript - High-throughput messaging with automatic retry, DLQ, batch processing & graceful shutdown. Production-ready AMQP client with zero message loss guarantee.
82 lines • 2.46 kB
TypeScript
export interface ConnectionConfig {
host: string;
port: number;
username: string;
password: string;
vhost?: string;
reconnectDelay?: number;
heartbeat?: number;
ssl?: boolean;
}
export interface RabbitMQConfig {
connection: ConnectionConfig;
defaultPrefetchCount?: number;
gracefulShutdownTimeout?: number;
highThroughput?: boolean;
mode?: 'full' | 'publisher-only' | 'consumer-only';
}
export interface RetryOptions {
maxRetries: number;
retryDelay: number;
delayType: 'fixed' | 'exponential';
delay?: number;
}
export interface PublisherQueueOptions {
queueName: string;
durable?: boolean;
createQueue?: boolean;
skipQueueAssert?: boolean;
}
export interface QueueOptions extends PublisherQueueOptions {
processor: (data: any) => Promise<void>;
errCallback?: (error: Error, data?: any) => Promise<void>;
prefetchCount?: number;
retryOptions?: RetryOptions;
exclusive?: boolean;
autoDelete?: boolean;
deadLetterExchange?: string;
deadLetterRoutingKey?: string;
}
export interface PublishOptions {
persistent?: boolean;
messageId?: string;
timestamp?: number;
expiration?: string;
priority?: number;
batch?: boolean;
exchange?: string;
routingKey?: string;
skipQueueAssert?: boolean;
createQueue?: boolean;
}
export interface MessageHeaders {
retryCount?: number;
originalQueue?: string;
errorMessage?: string;
firstFailedAt?: number;
[key: string]: any;
}
export interface ProcessedMessage {
id: string;
content: any;
headers: MessageHeaders;
timestamp: number;
ack: () => Promise<void>;
nack: (requeue?: boolean) => Promise<void>;
reject: (requeue?: boolean) => Promise<void>;
}
export interface RabbitMQInstance {
publish: (queueName: string, data: any, options?: PublishOptions) => Promise<void>;
publishToExchange: (exchange: string, routingKey: string, data: any, options?: PublishOptions) => Promise<void>;
registerQueue?: (options: QueueOptions) => Promise<void>;
assertQueue: (options: PublisherQueueOptions) => Promise<void>;
checkQueue: (queueName: string) => Promise<{
messageCount: number;
consumerCount: number;
}>;
close: () => Promise<void>;
isConnected: () => boolean;
getConnectionInfo: () => ConnectionConfig | null;
flush: () => Promise<void>;
}
//# sourceMappingURL=index.d.ts.map