Skip to main content

Leave Outbox and Inbox Storage

Summary

LeaveDbContext contains a transactional outbox but no general processed-event/inbox object.

Audience

Backend developers, QA, architects, DevOps engineers, messaging owners, and support.

Reference Content

OutboxMessages stores message/event identity, type, serialized payload, occurrence/processing time, delivery status, retry/error information, optional correlation/tenant context, and source-service identity. This page intentionally does not document payload bodies. Event identity is unique; status + occurrence time supports oldest-first polling of Pending/Failed messages. The outbox has no global tenant filter because polling is operational and cross-tenant.

Aggregate events are mapped and added before the base EF save, so business state and newly produced outbox rows share that commit. Relay processing and marking processed/failed occur later. A processed outbox row proves that the relay publish path completed according to the processor; it does not prove downstream consumer completion.

No ProcessedIntegrationEvent or inbox DbSet/table exists in LeaveDbContext. EmployeeProfile stores only its last event identity and occurrence time, providing projection-specific duplicate/stale handling rather than a general ledger. Cross-event replay semantics therefore remain Requires confirmation.

Source References

  • microservices/src/leave-service/Infrastructure/LeaveDbContext.cs
  • microservices/src/leave-service/Infrastructure/Persistence.cs
  • microservices/src/leave-service/Messaging/OutboxRelayHostedService.cs
  • microservices/src/leave-service/Messaging/EmployeeProfileConsumer.cs
  • microservices/src/shared-kernel/Outbox/OutboxMessage.cs

See Also

Keywords

  • Transactional outbox
  • Inbox absence
  • Delivery state

Revision Information

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