UNPKG

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.

79 lines 2.22 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.calculateDelay = calculateDelay; exports.generateMessageId = generateMessageId; exports.createGracefulShutdown = createGracefulShutdown; exports.formatError = formatError; exports.normalizeQueueName = normalizeQueueName; exports.createDLQName = createDLQName; exports.createRetryQueueName = createRetryQueueName; /** * Retry mekanizması için delay hesaplama */ function calculateDelay(retryCount, options) { const { retryDelay, delayType, delay = retryDelay } = options; if (delayType === 'exponential') { return Math.min(delay * Math.pow(2, retryCount), 60000); // Max 60 saniye } return retryDelay; } /** * Mesaj idempotency kontrolü için unique ID oluşturma */ function generateMessageId() { return `${Date.now()}-${Math.random().toString(36).substr(2, 9)}`; } /** * Graceful shutdown için promise wrapper */ function createGracefulShutdown(timeoutMs) { let isShuttingDown = false; let shutdownPromise = null; const shutdown = async () => { if (shutdownPromise) { return shutdownPromise; } isShuttingDown = true; shutdownPromise = new Promise((resolve) => { setTimeout(() => { resolve(); }, timeoutMs); }); return shutdownPromise; }; return { shutdown, isShuttingDown: () => isShuttingDown }; } /** * Hata mesajlarını formatla */ function formatError(error) { if (error instanceof Error) { return error.message; } if (typeof error === 'string') { return error; } return 'Unknown error occurred'; } /** * Queue adını normalize et */ function normalizeQueueName(queueName) { return queueName.toLowerCase().replace(/[^a-z0-9\-_.]/g, '-'); } /** * Dead letter queue adını oluştur */ function createDLQName(originalQueueName) { return `${normalizeQueueName(originalQueueName)}.dlq`; } /** * Retry queue adını oluştur */ function createRetryQueueName(originalQueueName, retryCount) { return `${normalizeQueueName(originalQueueName)}.retry.${retryCount}`; } //# sourceMappingURL=helpers.js.map