@suissa/universal-queues
Version:
Factory universal para mensageria (RabbitMQ, Kafka, SQS) para sistemas distribuídos.
32 lines • 1.7 kB
JavaScript
;
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