Sobes.tech
Junior — Middle

Pode explicar o conceito de Transactional Outbox e por que ela é usada?

sobes.tech IA

Resposta da IA

Transactional Outbox é um padrão utilizado para garantir a entrega fiável de mensagens em sistemas distribuídos, especialmente quando é necessário garantir a consistência entre a base de dados e o sistema de troca de mensagens.

A ideia é que, ao realizar uma operação de negócio que altera dados, juntamente com essas alterações é registada uma entrada especial (outbox) com informações sobre o evento que deve ser publicado.

Após o commit bem-sucedido da transação, um processo ou serviço separado lê essas entradas da outbox e envia mensagens para a fila ou broker de mensagens.

Isto ajuda a evitar problemas com perda de mensagens ou desincronização de dados, uma vez que a entrada na outbox e a alteração de dados ocorrem de forma atómica.

Exemplo:

  1. Na transação, atualizamos a tabela de pedidos e adicionamos uma entrada na tabela outbox.
  2. Após o commit, um worker separado lê as novas entradas da outbox e publica eventos no Kafka, RabbitMQ, etc.
  3. Após o envio bem-sucedido, a entrada da outbox é removida ou marcada como processada.

Desta forma, consegue-se uma integração fiável entre a base de dados e o sistema de troca de mensagens sem perda de dados.