Outbox Lab

Payments API

Registra el pago y el evento en una misma transacción. Luego, un relay drena la outbox hacia el broker

Arquitectura

Qué demuestra

  • Tabla payments como estado de negocio y tabla outbox con eventos pending / sent / failed
  • Atomicidad: pago y evento se escriben en la misma transacción (ambos o ninguno)
  • Relay en segundo plano que publica pendientes con reintentos
  • Modo caos: si el broker cae, los eventos esperan y se drenan al reactivarlo

Backend Architecture

  • Go + PostgreSQL.
  • Migraciones con golang-migrate.
  • Broker in-process.
  • Entrega at-least-once vía outbox + relay asíncrono; idempotencia en el consumidor (dedupe por event_id) para efecto exactly-once.

Tecnologías

  • Go
  • PostgreSQL
  • golang-migrate