← Back to microservices patterns mapconsistency
Microservices Pattern
Outbox + Inbox Pattern
Use outbox records for reliable sends and inbox records for idempotent receives.
Detailed Description
Outbox solves reliable event publishing. Inbox solves duplicate event processing.
Together they create practical exactly-once effects over systems that normally deliver at least once.
Visual Diagram
Outbox (sender side)
BEGIN TX:
INSERT orders → order data
INSERT outbox → { msgId, event, status:pending }
COMMIT
Poller: read outbox → publish to Kafka → mark sent
Inbox (receiver side)
Receive event { msgId: "m-456" }
CHECK inbox table: msgId=m-456 exists?
→ YES: already processed, skip (idempotent)
→ NO: process + INSERT inbox(m-456)Tradeoffs
Pros
Reliable delivery and deduplication
Cons
Inbox/outbox cleanup and operational complexity
Examples: Debezium outbox, custom outbox poller, inbox table
Comments
Sign in to leave a comment. Your name and photo come from Google; nothing else is shared.
Loading comments...
All courses
24 courses in 5 subjects
AI
System Design
Backend
- GraphQL8 modules · 69 lessons planned
- Core Python13 modules · 75 lessons planned
- FastAPI5 sections · 20 lessons
- Node.js14 modules · 206 lessons planned
- Node.js Performance7 chapters · 36 topics
- Event Loop Lifecycle6 phases · 3 scenarios
- Docker & Containerization11 modules · 144 lessons planned
- AWS for Developers14 modules · 219 lessons planned
- CI/CD & DevOps Automation10 modules · 134 lessons planned
Frontend
Fundamentals
On this page
0 sections