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