Skip to content

Introduction

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 Aggregate.

Additional components include:

  • Aggregate persistence using KurrentDB, PostgreSQL, Microsoft SQL Server, and SQLite
  • Real-time subscriptions for KurrentDB, PostgreSQL, Microsoft SQL Server, SQLite, 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 KurrentDB, RabbitMQ, Google PubSub, and Apache Kafka
  • Read model projections for MongoDB
  • Gateway for producing events to other services (Event-Driven Architecture support)

You can find all the NuGet packages by visiting the Eventuous profile.

PackageWhat’s it for
EventuousThe umbrella package that includes the most used components
Eventuous.DomainLibrary that includes the domain model abstractions like aggregates
Eventuous.PersistenceThe base library for persistence, including event store and aggregate store abstractions
Eventuous.ApplicationCommand services base library, including diagnostics and DI support
Eventuous.SubscriptionsSubscriptions base library, including diagnostics and DI support
Eventuous.Subscriptions.PollySupport for retries in event handlers using Polly
Eventuous.ProducersProducers base library, including diagnostics and DI support
Eventuous.DiagnosticsDiagnostics base library
Eventuous.Diagnostics.OpenTelemetryDiagnostics integration with OpenTelemetry
Eventuous.Diagnostics.LoggingEventuous internal logs adapter for ASP.NET Core logging
Eventuous.GatewayEventuous gateway for connecting subscriptions with producers
Eventuous.KurrentDBSupport for KurrentDB (event store, subscriptions, producers)
Eventuous.PostgresqlSupport for PostgreSQL (event store, subscriptions, producers)
Eventuous.SqlServerSupport for Microsoft SQL Server (event store, subscriptions, producers)
Eventuous.SqliteSupport for SQLite (event store, subscriptions, projections)
Eventuous.RabbitMqSupport for RabbitMQ (subscriptions, producers)
Eventuous.GooglePubSubSupport for Google PubSub (subscriptions, producers)
Eventuous.KafkaSupport for Apache Kafka (producers)
Eventuous.ElasticSearchSupport for Elasticsearch (producers, event store for archive purposes)
Eventuous.Projections.MongoDBProjections support for MongoDB
Eventuous.AspNetCoreDI extensions for app services, aggregate factory, etc.
Eventuous.AspNetCore.WebHTTP API automation for app services

Normally, for the domain model project, you would only need to reference Eventuous.Domain package.

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.