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:
- No serviço, o pedido é atualizado e, ao mesmo tempo, um evento "OrderUpdated" é registrado na tabela outbox.
- A transação é confirmada — os dados e o evento são armazenados de forma atômica.
- 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.