How alifcapital/eventstorage works
EventStorage is a .NET library for durable inbox and outbox handling, backed by PostgreSQL. Applications store outgoing events through the outbox manager; the library persists them and later dispatches them to application-provided publishers, retrying failures. Incoming events can likewise be stored and processed through inbox handlers. Separate management services support querying and acting on stored events. The tree and excerpts establish persistence and management details; inbox/outbox processor internals and some runtime registrations were not sampled, so those links are marked unverified where needed.
Main entry points: InboxRepository.cs Inbox repository · OutboxRepository.cs Outbox repository · BaseEventRepository.cs Postgres repository · OutboxEventManager.cs Outbox manager
Components 19
Outbox publishing
- Outbox manager
src/Outbox/Managers/OutboxEventManager.cs - Outbox processor
src/Outbox/OutboxEventsProcessor.cs - Event publishers
src/Outbox/Providers/EventProviders - Outbox messages
src/Outbox/Models/OutboxMessage.cs
Inbox receiving
- Inbox manager
src/Inbox/Managers/InboxEventManager.cs - Inbox processor
src/Inbox/InboxEventsProcessor.cs - Event handlers
src/Inbox/Providers - Inbox messages
src/Inbox/Models/InboxMessage.cs
Persistence
- Inbox repository
src/Inbox/Repositories/InboxRepository.cs - Outbox repository
src/Outbox/Repositories/OutboxRepository.cs - Postgres repository
src/Repositories/BaseEventRepository.cs
Management and setup
- Event management
src/Management/BaseEventsManagementService.cs - Inbox management
src/Management/InboxEventsService.cs - Outbox management
src/Management/OutboxEventsService.cs - Table creation
src/Services/EventStoreTablesCreator.cs - Inbox/outbox settings
src/Configurations/InboxOrOutboxStructure.cs
Other components
- Application
- Event producers
- PostgreSQL
Connections 20
- Application → Outbox manager: stores event
README.md - Outbox manager → Outbox messages: creates message
src/Outbox/Managers/OutboxEventManager.cs - Outbox manager → Outbox repository: inserts event
src/Outbox/Managers/OutboxEventManager.cs - Outbox repository → Postgres repository: uses repository
src/Outbox/Repositories/OutboxRepository.cs - Postgres repository → PostgreSQL: reads and writes
src/Repositories/BaseEventRepository.cs - Outbox processor → Outbox repository: fetches events
- Outbox processor → Event publishers: dispatches to
- Event publishers → Application: performs delivery
README.md - Event producers → Inbox manager: submits event
- Inbox manager → Inbox messages: creates message
src/Inbox/Managers/InboxEventManager.cs - Inbox manager → Inbox repository: inserts event
src/Inbox/Managers/InboxEventManager.cs - Inbox repository → Postgres repository: uses repository
src/Inbox/Repositories/InboxRepository.cs - Inbox processor → Inbox repository: fetches events
- Inbox processor → Event handlers: dispatches to
- Event management → Postgres repository: queries and updates
src/Management/BaseEventsManagementService.cs - Inbox management → Event management: specializes
src/Management/InboxEventsService.cs - Outbox management → Event management: specializes
src/Management/OutboxEventsService.cs - Table creation → Inbox repository: creates tables
src/Services/EventStoreTablesCreator.cs - Table creation → Outbox repository: creates tables
src/Services/EventStoreTablesCreator.cs - Inbox/outbox settings → Table creation: configures tables