Sobes.tech
Junior — Middle

Pode explicar o conceito de Transaction Outbox e sua aplicação?

sobes.tech IA

Resposta da IA

Transaction Outbox — é um padrão utilizado para garantir a transmissão confiável de eventos ou mensagens de uma base de dados para outros sistemas, especialmente em arquiteturas de microsserviços.

A ideia é que, ao alterar dados na base e precisar enviar um evento (por exemplo, para uma fila de mensagens), essas operações são realizadas dentro de uma única transação. Em vez de enviar a mensagem diretamente, o evento é registrado em uma tabela especial chamada "outbox".

Após o commit bem-sucedido da transação, um processo ou serviço separado lê os registros da tabela outbox e os envia ao sistema correspondente (por exemplo, Kafka, RabbitMQ). Isso garante que o evento não seja perdido e não seja enviado duas vezes.

Exemplo de aplicação:

  1. No serviço, o pedido é atualizado e, ao mesmo tempo, um evento "OrderUpdated" é registrado na tabela outbox.
  2. A transação é confirmada — os dados e o evento são armazenados de forma atômica.
  3. Um worker separado lê da outbox e publica o evento na fila.

Dessa forma, alcança-se consistência entre o banco de dados e o sistema de troca de mensagens sem transações distribuídas.