Eventuous 0.15 Help

Introduction

What is Eventuous?

Eventuous is a (relatively) lightweight library, which allows building production-grade applications using the Event Sourcing pattern.

The base library Eventuous.Domain has a set of abstractions, following Domain-Driven Design tactical patterns, like Aggregate.

Additional components include:

  • Persistence using EventStoreDB, PostgreSQL, and Microsoft SQL Server

  • Real-time subscriptions for EventStoreDB, PostgreSQL, Microsoft SQL Server, RabbitMQ, and Google Pub/Sub

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

Packages

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

Eventuous

The umbrella package that includes the most used components (Domain, Application, Persistence). Doesn't include subscriptions or any infrastructure support.

Eventuous.Domain

Library that includes the domain model abstractions like Aggregates.

Eventuous.Application

Command services base library, including diagnostics and support for dependency injection.

Eventuous.Persistence

The base library for persistence, including event store and aggregate store abstractions. Also includes support for dependency injection.

Eventuous.Subscriptions

Subscriptions base library, including diagnostics and support for dependency injection.

Eventuous.Subscriptions.Polly

Support for retries in event handlers using Polly.

Eventuous.Producers

Producers base library, including diagnostics and support for dependency injection.

Eventuous.Diagnostics

Diagnostics base library.

Eventuous.Diagnostics.OpenTelemetry

Diagnostics integration with OpenTelemetry.

Eventuous.Diagnostics.Logging

Eventuous internal logs adapter for ASP.NET Core logging.

Eventuous.Gateway

Gateway component for connecting subscriptions with producers. Typically used for converting domain ( private) events to integration (public) events, as well as for implementing reactive processes.

Eventuous.EventStore

Support for EventStoreDB (event store, subscriptions, producers).

Eventuous.Postgresql

Support for PostgreSQL (event store, subscriptions, producers)

Eventuous.SqlServer

Support for Microsoft SQL Server (event store, subscriptions, producers)

Eventuous.RabbitMq

Support for RabbitMQ (subscriptions, producers).

Eventuous.GooglePubSub

Support for Google Pub/Sub (subscriptions, producers).

Eventuous.GooglePubSub.CloudRun

Support for Google Pub/Sub trigger for Cloud Run serverless workloads using HTTP.

Eventuous.Kafka

Support for Apache Kafka (producers).

Eventuous.ElasticSearch

Support for Elasticsearch (producers, event store for archive purposes).

Eventuous.Projections.MongoDB

Projections support for MongoDB.

Eventuous.Extensions.DependencyInjection

Dependency injection extensions for command services, aggregate factory, etc.

Eventuous.AspNetCore.Web

HTTP API automation for command services.

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

Go further

Read about the right way to understand how Eventuous embraces the original idea of Event Sourcing.

Have a look at the samples.

Last modified: 16 February 2024