14 lines
1.2 KiB
Markdown
14 lines
1.2 KiB
Markdown
# ADR-008 — Outbox transaccional
|
|
|
|
- Estado: Aceite como padrão para integração assíncrona.
|
|
- Data: 2026-10-01
|
|
- Contexto: existem tabelas `outbox_events`/`inbox_events`, cliente SuiteCRM e emissão localizada; integração externa não está globalmente homologada.
|
|
|
|
## Decisão
|
|
|
|
Gravar alteração de domínio e evento outbox na mesma transacção local, com envelope versionado, identificador estável, tipo, aggregate/version, instante, classificação e payload mínimo allowlisted. Nunca incluir segredos, tokens ou PII desnecessária. Worker publica após commit, usa backoff configurado por operação, regista tentativas/erro sanitizado e marca sucesso; assumir entrega pelo menos uma vez. Consumidor valida schema/versão, deduplica por message/event ID via inbox e confirma efeito e recibo atomicamente. Falhas permanentes vão para estado de falha observável e exigem replay idempotente. Não prometer exactly-once entre sistemas.
|
|
|
|
## Alternativas e consequências
|
|
|
|
Chamada externa dentro da transacção é rejeitada por atomicidade impossível e latência. Dispatch directo após commit perde eventos em crash. Contratos e políticas de retenção/PII precisam validação por integração; existência das tabelas não significa operação activa.
|