Transactional Outbox
Caixa de saída transacional
Uma caixa de saída transacional salva uma alteração de dados e um registro de mensagem em uma única transação de banco de dados local. Um retransmissor envia a mensagem salva após a transação ser confirmada.
local transaction(business row + outbox row) -> relay/CDC -> broker -> idempotent consumerorders✓order_2048outbox✓evt_784local transaction(business row + outbox row) -> relay/CDC -> broker -> idempotent consumerJOBOutro exemplo
O checkout salva o pedido `984` e o evento da caixa de saída `OrderCreated:984` em uma única transação. Um relé publica o evento posteriormente. Se ele parar após enviar, mas antes de marcar a linha, pode enviar novamente. O consumidor remove o duplicado pelo ID do evento.
Partes principais
- 01alteração de dados de negócios
- 02linha de evento da outbox
- 03Uma transação local
- 04Relay ou fluxo de mudanças
- 05publicação do corretor
- 06consumidor seguro contra duplicatas
Use-o quando
Use-o quando uma alteração comprometida no banco de dados deve levar de forma confiável a uma mensagem ou evento. Mantenha a outbox na mesma transação e opere o relé como seu próprio processo confiável.
Não o use quando
Não chame de entrega única ou de uma transação única entre serviços. Planeje eventos repetidos, sua ordem, atraso de retransmissão, limpeza e manipulação segura de duplicatas.
Nome usado no código
local transaction(business row + outbox row) -> relay/CDC -> broker -> idempotent consumer Antes de lançar
Check contracts and invariants, authorization, and input limits. Test retries, one-time effects, timeouts, and partial failures. Verify data integrity, compatibility, monitoring, recovery, and rollback.
Outcome: Complete the task with Caixa de saída transacional (Transactional Outbox). User context: O checkout salva o pedido `984` e o evento da caixa de saída `OrderCreated:984` em uma única transação. Um relé publica o evento posteriormente. Se ele parar após enviar, mas antes de marcar a linha, pode enviar novamente. O consumidor remove o duplicado pelo ID do evento. Technical concept or control: Caixa de saída transacional (Transactional Outbox). Why it fits: Use-o quando uma alteração comprometida no banco de dados deve levar de forma confiável a uma mensagem ou evento. Mantenha a outbox na mesma transação e opere o relé como seu próprio processo confiável. Do not use it when: Não chame de entrega única ou de uma transação única entre serviços. Planeje eventos repetidos, sua ordem, atraso de retransmissão, limpeza e manipulação segura de duplicatas. Engineering requirements: Define inputs, outputs, contracts, and rules that must always hold. Set authorization and input checks. Define failures, timeouts, retries, one-time effects, data moves, and compatibility limits. Operations: Add useful signals and logs that hide sensitive data. Set capacity limits and write an operator guide. Test recovery and rollback. Acceptance criteria: Contract and failure-path tests pass. Data and authorization rules still hold during retries and partial failures. Check performance limits, monitoring, recovery, and rollback. Evidence and limits (evidence boundary): Nenhum padrão oficial único controla todo o termo. Seu significado pode mudar entre equipes, plataformas ou frameworks. Unknowns to confirm: Where the code runs, data stores, traffic shape, consistency needs, and the security boundary. Also confirm the compatibility period, service goals, and rollback limits.
Conferir este pedido
Review how Caixa de saída transacional (Transactional Outbox) is used now. Definition: Uma caixa de saída transacional salva uma alteração de dados e um registro de mensagem em uma única transação de banco de dados local. Um retransmissor envia a mensagem salva após a transação ser confirmada. Release checks: Check contracts and invariants, authorization, and input limits. Test retries, one-time effects, timeouts, and partial failures. Verify data integrity, compatibility, monitoring, recovery, and rollback. Before changing code, list the evidence, gaps, severity, and the smallest safe fix.