UNPKG

@suissa/universal-queues

Version:

Factory universal para mensageria (RabbitMQ, Kafka, SQS) para sistemas distribuídos.

32 lines 1.7 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.MessagingFactory = void 0; const rabbitmq_1 = require("../rabbitmq"); const instances = new Map(); class MessagingFactory { static async create(driver, opts) { if (driver !== 'rabbitmq') throw new Error(`Driver não suportado: ${driver}`); const o = typeof opts === 'string' ? { uri: opts } : (opts || {}); const name = o.name || 'default'; const key = `rabbitmq::${name}`; const cached = instances.get(key); if (cached) return cached; const client = new rabbitmq_1.RabbitMQClient({ prefetch: o.prefetch ?? 20, operationTimeoutMs: o.operationTimeoutMs ?? (process.env.UNIVERSAL_QUEUES_OPERATION_TIMEOUT_MS ? Number(process.env.UNIVERSAL_QUEUES_OPERATION_TIMEOUT_MS) : 5000), confirm: o.confirm ?? (process.env.RABBITMQ_CONFIRM ? /^(1|true|yes)$/i.test(process.env.RABBITMQ_CONFIRM) : true), uris: o.uris && o.uris.length ? o.uris : [o.uri || process.env.RABBITMQ_URI || 'amqp://localhost:5672'], forensicPath: o.forensicPath ?? process.env.UNIVERSAL_QUEUES_FORENSIC_PATH, resolveOnFallback: o.resolveOnFallback ?? (process.env.UNIVERSAL_QUEUES_RESOLVE_ON_FALLBACK ? /^(1|true|yes)$/i.test(process.env.UNIVERSAL_QUEUES_RESOLVE_ON_FALLBACK) : false), }); if (o.connect !== false) { await client.connect(o.uri || process.env.RABBITMQ_URI || 'amqp://localhost:5672'); } instances.set(key, client); return client; } } exports.MessagingFactory = MessagingFactory; //# sourceMappingURL=MessagingFactory.js.map