What is Eventuous?
Eventuous is a (relatively) lightweight library, which allows building production-grade applications using the Event Sourcing pattern.
The base library has a set of abstractions, following Domain-Driven Design tactical patterns, like
Additional components include:
- Aggregate persistence using EventStoreDB, PostgreSQL, and Microsoft SQL Server
- Real-time subscriptions for EventStoreDB, PostgreSQL, Microsoft SQL Server, RabbitMQ, and Google PubSub
- Command services and HTTP-based commands
- Extensive observability, including Open Telemetry support
- Integration with ASP.NET Core dependency injection, logging, and Web API
- Producers for EventStoreDB, RabbitMQ, Google PubSub, and Apache Kafka
- Read model projections for MongoDB
- Gateway for producing events to other services (Event-Driven Architecture support)
Eventuous is under active development and doesn't follow semantic versioning. We introduce changes often, according to immediate needs of its production users. The API hasn't reached a stable state and can change at any time. A patch version update would normally not change the API, but the minor version cloud.
You can find all the NuGet packages by visiting the Eventuous profile.
|Package||What's it for|
|The umbrella package that includes the most used components|
|Library that includes the domain model abstractions like aggregates|
|The base library for persistence, including event store and aggregate store abstractions|
|Command services base library, including diagnostics and DI support|
|Subscriptions base library, including diagnostics and DI support|
|Support for retries in event handlers using Polly|
|Producers base library, including diagnostics and DI support|
|Diagnostics base library|
|Diagnostics integration with OpenTelemetry|
|Eventuous internal logs adapter for ASP.NET Core logging|
|Eventuous gateway for connecting subscriptions with producers|
|Support for EventStoreDB (event store, subscriptions, producers)|
|Support for PostgreSQL (event store, subscriptions, producers)|
|Support for Microsoft SQL Server (event store, subscriptions, producers)|
|Support for RabbitMQ (subscriptions, producers)|
|Support for Google PubSub (subscriptions, producers)|
|Support for Apache Kafka (producers)|
|Support for Elasticsearch (producers, event store for archive purposes)|
|Projections support for MongoDB|
|DI extensions for app services, aggregate factory, etc.|
|HTTP API automation for app services|
Normally, for the domain model project, you would only need to reference
Go further - WIP
Read about the right way to understand how Eventuous embraces the original idea of Event Sourcing.
You can have a look at the sample project in a separate repository.