universal-queues
Version:
Factory universal para mensageria (RabbitMQ, Kafka, SQS) para sistemas distribuídos.
41 lines • 1.49 kB
JavaScript
;
// src/handlers/outbox.ts
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.saveToOutbox = saveToOutbox;
exports.processOutbox = processOutbox;
const promises_1 = __importDefault(require("fs/promises"));
const OUTBOX_PATH = './outbox-events.json';
async function saveToOutbox(event) {
let outbox = [];
try {
const file = await promises_1.default.readFile(OUTBOX_PATH, 'utf-8');
outbox = JSON.parse(file);
}
catch (e) { /* arquivo não existe ou está vazio */ }
outbox.push(event);
await promises_1.default.writeFile(OUTBOX_PATH, JSON.stringify(outbox, null, 2));
}
async function processOutbox(sendFn) {
try {
const file = await promises_1.default.readFile(OUTBOX_PATH, 'utf-8');
const outbox = JSON.parse(file);
for (const event of outbox) {
try {
await sendFn(event);
// Se enviado com sucesso, pode remover ou marcar como enviado
}
catch (e) {
// log de erro, mantém no outbox para próxima tentativa
}
}
// Após processar, zere o arquivo (ou use lógica mais robusta de update)
await promises_1.default.writeFile(OUTBOX_PATH, '[]');
}
catch (e) {
// nada a processar
}
}
//# sourceMappingURL=outbox.js.map