Skip to main content
Version: 0.14

Introduction

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

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)
note

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.

Packages

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.EventStoreSupport for EventStoreDB (event store, subscriptions, producers)
Eventuous.PostgresqlSupport for PostgreSQL (event store, subscriptions, producers)
Eventuous.SqlServerSupport for Microsoft SQL Server (event store, subscriptions, producers)
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.

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.