UNPKG

universal-queues

Version:

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

34 lines (30 loc) 1.07 kB
// src/handlers/outbox.ts import fs from 'fs/promises'; const OUTBOX_PATH = './outbox-events.json'; export async function saveToOutbox(event: object) { let outbox: object[] = []; try { const file = await fs.readFile(OUTBOX_PATH, 'utf-8'); outbox = JSON.parse(file); } catch (e) { /* arquivo não existe ou está vazio */ } outbox.push(event); await fs.writeFile(OUTBOX_PATH, JSON.stringify(outbox, null, 2)); } export async function processOutbox(sendFn: (event: object) => Promise<void>) { try { const file = await fs.readFile(OUTBOX_PATH, 'utf-8'); const outbox: object[] = 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 fs.writeFile(OUTBOX_PATH, '[]'); } catch (e) { // nada a processar } }