Skip to main content

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​

See Also​

Keywords​

  • Performance persistence
  • Outbox Storage
  • Draft database documentation

Source References​

  • microservices/src/performance-service/Infrastructure/PerformanceDbContext.cs
  • microservices/src/performance-service/Infrastructure/Persistence.cs
  • microservices/src/performance-service/Messaging/OutboxRelayHostedService.cs
  • microservices/src/shared-kernel/Messaging/OutboxProcessor.cs

Revision Information​

  • Status: Draft
  • Last reviewed: 2026-07-16
  • Review cycle: Quarterly