UNPKG

@suissa/universal-queues

Version:

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

39 lines 1.72 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.FallbackMessage = FallbackMessage; // src/core/fallback.ts const envelope_1 = require("./envelope"); /** * Decorator agnóstico de mensageria. * - Enriquece headers (x-event-id, x-event-hash, x-origin) * - Em erro, chama `this.__runFallback(mode, ctx)` (o driver implementa) * - Por padrão relança o erro; o driver pode escolher resolver no fallback */ function FallbackMessage(mode = 'DLQ') { return function (_target, _prop, descriptor) { const original = descriptor.value; descriptor.value = async function (exchangeOrTopic, routingKeyOrSubject, message, headers = {}) { const env = (0, envelope_1.enrichHeaders)(exchangeOrTopic, routingKeyOrSubject, message, headers); try { return await original.apply(this, [exchangeOrTopic, routingKeyOrSubject, message, env.headers]); } catch (error) { const run = this.__runFallback; if (typeof run === 'function') { const ret = await run(mode, { headers: env.headers, route: { exchange: exchangeOrTopic, routingKey: routingKeyOrSubject, topic: exchangeOrTopic, subject: routingKeyOrSubject }, payload: message, error }); // Se o driver optar por "resolver" no fallback, o retorno sobe if (ret !== undefined) return ret; } throw error; } }; return descriptor; }; } //# sourceMappingURL=fallback.js.map