Overview
OpenOutbox is a specification for implementing the transactional outbox pattern across different storages and message brokers.
This specification is organized into the following sections:
Foundations
Section titled “Foundations”- Introduction — Overview and purpose.
- Terminology and Concepts — Key definitions and actors.
Core Concepts
Section titled “Core Concepts”- Event Model — The structure of outbox records.
- Delivery Semantics — Guarantees and acknowledgement rules.
- Processing Lifecycle — State transitions and flow.
Technical Contracts
Section titled “Technical Contracts”- Store Contract — Requirements for storage backends.
- Publisher Contract — Requirements for message dispatchers.
Reliability & Scale
Section titled “Reliability & Scale”- Retries and Failures — Error handling and terminal states.
- Ordering and Partitioning — Concurrency and sequence guarantees.
Management
Section titled “Management”- Operations and Replay — Inspection, recovery, and manual overrides.
The goal is to standardize outbox behavior independently from a specific database, broker, or framework.
- define a portable outbox contract
- separate semantics from implementation
- support multiple storage and broker backends
- make delivery guarantees explicit
- standardize ordering and partitioning behaviors
- enable conformance testing across implementations
Non-goals
Section titled “Non-goals”- defining a single required database schema
- defining broker-specific wire protocols
- guaranteeing exactly-once delivery across all systems
- replacing broker-native semantics
Status
Section titled “Status”Draft