Stackbook Logo
data-consistencyestablished · medium operational burden

Transactional Outbox Pattern

Also known as: outbox, transactional-outbox, outbox-table, dual-write-problem

Intent

Guarantee atomic database update + message publish without distributed transactions, using an outbox table and relay.

Problem

Service must update DB AND publish event. Dual-write fails: DB commits, publish fails → inconsistency. 2PC unavailable.

Forces

  • Database and message broker are separate systems
  • Neither supports distributed transactions across both
  • Application must not lose events or create duplicates
  • Latency of dual-write must be bounded

Solution

✓ When to Use

  • Any service that must publish events after DB changes
  • Microservices needing reliable event-driven communication
  • When 2PC is unavailable or undesirable

✗ When Not to Use

  • Single-service deployments with embedded broker (rare)
  • When eventual consistency of seconds is unacceptable
  • Very low throughput where polling overhead dominates

Pros

  • +Atomic DB + message write using local transaction only
  • +No message loss — outbox is durable
  • +Relay can be simple poller or CDC (Debezium)
  • +Works with any message broker

Cons

  • Eventual consistency between DB commit and message publish (ms to seconds)
  • Relay process adds operational component
  • Outbox table growth requires cleanup strategy

Cost Profile

Infrastructure

Low — extra table + relay process

Operational

Medium — monitor relay lag, handle broker outages

Cognitive

Medium — understanding eventual consistency window

Failure Modes

  • Relay crashes → message backlog, eventual delivery

  • Broker unavailable → relay retries with backoff

  • Duplicate publishes if relay crashes after publish but before mark (idempotent consumers needed)

  • Outbox bloat → cleanup job fails, table grows

  • CDC connector lag → events delayed

Real-World Examples

Alternatives

  • dual-write
  • event-sourcing
  • cdc-only
  • saga-pattern

Related Patterns

  • idempotency-key
  • cdc
  • event-sourcing
  • saga-pattern
  • dual-write

Competency Domains

data consistencydata statedistribution communicationreliability opseconomics evolution