Regra de ouro: o evento e o estado de negócio commitam na mesma transação de banco. Nunca publique pro broker antes do commit.

O problema sem Outbox

Cenário: OrderService salva o pedido no banco e depois publica o evento pro broker. E se o broker estiver fora? O pedido existe, o evento não. O InventoryService nunca decrementa o estoque.
Ordem das operaçõesO que pode dar errado
1. Salva no banco ✓
2. Publica no broker ✗
Evento perdido para sempre
1. Publica no broker ✓
2. Salva no banco ✗
Evento sem dado correspondente
Outbox: ambos na mesma transaçãoAtômico — tudo ou nada