Hardware FixRecommendedDevice not working? Your driver may be the problemCheck updates for common hardware issues.Fix DriversOctober DealsAmazon USOctober deal check: compare before you payAmazon US: current deals, useful picks and tech finds.Check DealsClean PCRecommendedOne scan can reveal what keeps slowing WindowsLook for cleanup and repair opportunities.Run Scan×
Skip to content
World desk5 min

Transactional Outbox Pattern: Como Resolver o Dual Write

O transactional outbox grava a mudança de negócio e o evento na mesma transação local; depois, um relay publica o evento. Veja opções, limites e cuidados com duplicatas e ordenação.
Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

O transactional outbox resolve o dual write ao gravar a alteração de negócio e o evento correspondente na mesma transação local. Depois do commit, um relay publica os eventos confirmados no broker. Assim, o serviço não confirma a mudança no banco sem também registrar a intenção de notificar outros serviços — mas a publicação ainda pode se repetir, então consumidores precisam ser idempotentes.

O que é o problema de dual write?

Uma operação de negócio pode precisar atualizar o banco de dados e avisar outros serviços por meio de uma mensagem ou evento. São duas escritas em sistemas distintos: o banco e o broker. Sem uma transação distribuída que coordene ambos, não há garantia de que as duas operações tenham sucesso juntas.

Se o serviço confirmar primeiro a transação do banco e falhar antes de publicar, o estado local muda, mas os consumidores não ficam sabendo. Se publicar primeiro e a transação do banco falhar depois, um consumidor pode agir com base numa alteração que nunca foi confirmada. A AWS descreve essas duas janelas como a motivação para o padrão transactional outbox.

Como funciona o transactional outbox?

  1. Na mesma transação local, o serviço persiste a alteração de negócio e insere uma linha de evento na tabela outbox.
  2. Se uma dessas escritas falhar, a transação sofre rollback: nem a mudança de negócio nem o evento ficam confirmados.
  3. Depois do commit, um processo separado — o relay — lê eventos confirmados e os publica no broker.
  4. O relay marca ou remove o evento conforme a estratégia de armazenamento adotada.
  5. O consumidor processa a mensagem de forma idempotente ou deduplica pelo identificador do evento.

A linha da outbox costuma incluir um identificador estável, o tipo do evento, os dados do agregado e o payload. Se a ordem for importante, pode incluir também uma sequência ou versão do agregado. O formato exato depende do contrato do evento e das necessidades do serviço.

Free tools Windows power users keep installed

One-click scans. No signup required.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Como escolher e operar o relay?

As opções diferem em dependências, esforço operacional, recuperação e adequação ao banco. Não há um vencedor universal: as fontes documentam os mecanismos, mas não estabelecem um benchmark geral de throughput, latência ou custo que determine qual opção é melhor em todos os casos.

Opção Como encaminha eventos O que avaliar
Polling de tabela Consulta periodicamente a outbox, publica linhas pendentes e depois as marca ou remove. A AWS ilustra essa abordagem com um banco relacional e o Amazon SQS; veja a orientação da AWS. É uma abordagem conceitualmente direta. A equipe precisa projetar concorrência, bloqueios, lotes, backoff, limpeza e reprocessamento.
CDC com Debezium Um conector captura mudanças da tabela outbox e aplica a transformação Outbox Event Router. A configuração deve selecionar a tabela outbox para esse uso; consulte a documentação do Debezium. Faz sentido quando a equipe já opera CDC e Kafka Connect. No PostgreSQL, exige logical decoding e replication slots; slots podem reter segmentos WAL. Acompanhe o atraso do slot e o espaço em disco usado pelo WAL, e prefira um usuário de replicação dedicado com privilégios específicos, conforme a documentação do conector PostgreSQL.
DynamoDB Streams com EventBridge Pipes No exemplo da AWS, alterações do DynamoDB seguem pelo DynamoDB Streams e pelo EventBridge Pipes; veja a arquitetura descrita pela AWS. A AWS informa que os registros do DynamoDB Streams ficam retidos por até 24 horas e descreve opções de retry e DLQ nesse fluxo. Esse limite específico importa para recuperar uma indisponibilidade prolongada e não deve ser generalizado para outros bancos ou brokers.

Na prática, considere se o banco oferece CDC, se a equipe já domina o stack, que ordenação o contrato exige, como serão tratadas duplicatas e qual retenção e capacidade de replay são necessárias. Inclua também observabilidade, limpeza da outbox, tratamento de mensagens problemáticas e recuperação de falhas no desenho operacional.

Quais garantias o padrão oferece — e quais não oferece?

Atomicidade local, não entrega exatamente uma vez

A transação local garante que a alteração de negócio e a intenção de publicar sejam persistidas juntas. Ela não torna atômicos o banco, o relay, o broker e o consumidor como um conjunto. Se o relay publicar com sucesso e falhar antes de registrar que concluiu, pode tentar novamente e produzir uma duplicata. Filas Amazon SQS standard também podem entregar a mesma mensagem mais de uma vez, segundo a orientação da AWS. Não trate o transactional outbox como garantia de entrega exactly-once ponta a ponta.

Idempotência e deduplicação no consumidor

Use um identificador estável do evento como chave de idempotência. O consumidor pode registrar quais identificadores já processou e ignorar reentregas, ou pode implementar a ação de negócio de modo que executá-la novamente não altere o resultado. A alternativa depende do efeito da operação e de onde o consumidor consegue persistir seu controle de duplicatas.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Ordenação por agregado

Se eventos de um mesmo agregado precisarem ser aplicados em sequência, modele essa exigência explicitamente. Timestamp pode ajudar, mas sozinho não resolve necessariamente empates ou concorrência; uma sequência ou versão do agregado oferece uma referência mais adequada quando o contrato exige ordenação. A AWS destaca a importância de preservar a ordem, especialmente em event sourcing, e menciona timestamp e número de sequência como dados úteis.

Retries, mensagens problemáticas e recuperação

Retries e uma fila de mensagens não processadas (DLQ) ajudam a lidar com indisponibilidade e falhas persistentes, mas precisam vir acompanhados de monitoramento e procedimento de reprocessamento. No fluxo com DynamoDB Streams e EventBridge Pipes descrito pela AWS, há opções de retry e DLQ. Com CDC no PostgreSQL, monitore offsets do conector, saúde e atraso dos replication slots e crescimento do WAL: a retenção de segmentos pode consumir espaço enquanto o consumidor não avança.

Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Quando o transactional outbox não basta?

O padrão resolve a atomicidade entre o estado de um serviço e a intenção de publicar um evento. Ele não coordena, por si só, atualizações consistentes em vários serviços ou bancos. Quando uma operação precisa atravessar esses limites, a AWS recomenda considerar o padrão Saga para tratar a transação entre serviços; a orientação sobre consistência em arquiteturas orientadas a eventos está em Achieve domain consistency in event-driven architectures.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Leave a Reply

Your email address will not be published. Required fields are marked *

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

More from the Wire

  1. World desk4 min
    How to Spot an AI Voice Scam Before Sending MoneyDon’t rely on how a caller sounds. Pause, call back through a known number, and verify the emergency with another trusted person before sending money.
  2. Mountain View desk4 min
    Google’s SynthID Detector: How to Check AI-Generated Images, Video and AudioGoogle’s SynthID Detector looks for an embedded watermark in supported images, video and audio. Here is what its results do—and do not—show.
  3. Redmond desk20 min
    How to create a link to File or Folder in Windows 11Windows 11 gives you several ways to point to a file or folder without moving or duplicating it. You can create a desktop shortcut,…
Recommended PC Tool
Recommended PC Tool
PC Slower Than It Used to Be?Free scan - under a minute
Crashes, No Sound, or Screen Glitches?Free driver scan

Two free Windows tools

One Free Minute Could Fix That PC

Before you go - each of these free tools takes about a minute and tackles what quietly slows a Windows PC down.

Special offer. View Outbyte info, uninstall instructions, EULA, and Privacy Policy.