Outbox Storage
Summary
Transactional outbox persistence, polling, uniqueness, and relay boundary.
Audience
Backend engineers, database reviewers, architects, QA, support, operations, security reviewers, and product owners.
Overview
OutboxMessage is an operational record created from queued domain events during PerformanceDbContext SaveChanges. It stores event identity/type, serialized content conceptually, correlation and tenant metadata, lifecycle status, retry/error state, and occurrence/processing times.
Confirmed persistence behavior
- Event identity has a unique index.
- Status plus occurrence time has a non-unique polling index.
- Outbox has no tenant query filter.
- Aggregate state, audit/timeline, and new outbox records commit through the same local SaveChanges.
- A hosted relay polls pending or failed records in bounded batches and marks success or failure in later saves.
- Broker publication and downstream Notification delivery occur outside the originating transaction.
- Payload bodies and broker topology are intentionally excluded.
- No automated purge, replay command, or service-specific monitoring policy is implemented.
Classification
Implemented transactional outbox with Foundation operations.
Requires confirmation
Retention, replay authority, dead-letter policy, tenant access, monitoring, and cleanup require confirmation.
Diagram
Related Articles
See Also
Keywords
- Performance persistence
- Outbox Storage
- Draft database documentation
Source References
microservices/src/performance-service/Infrastructure/PerformanceDbContext.csmicroservices/src/performance-service/Infrastructure/Persistence.csmicroservices/src/performance-service/Messaging/OutboxRelayHostedService.csmicroservices/src/shared-kernel/Messaging/OutboxProcessor.cs
Revision Information
- Status: Draft
- Last reviewed: 2026-07-16
- Review cycle: Quarterly