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
Related Articles
See Also
Keywords
- Transactional outbox
- Inbox absence
- Delivery state
Revision Information
- Status: Draft
- Last reviewed: 2026-07-15
- Review cycle: Quarterly