All Projects → OKTAYKIR → Eventflow.example

OKTAYKIR / Eventflow.example

Licence: apache-2.0
DDD+CQRS+Event-sourcing examples using EventFlow following CQRS-ES architecture. It is configured with RabbitMQ, MongoDB(Snapshot store), PostgreSQL(Read store), EventStore(GES). It's targeted to .Net Core 2.2 and include docker compose file.

Projects that are alternatives of or similar to Eventflow.example

Event Sourcing Castanha
An Event Sourcing service template with DDD, TDD and SOLID. It has High Cohesion and Loose Coupling, it's a good start for your next Microservice application.
Stars: ✭ 68 (-48.09%)
Mutual labels:  event-sourcing, event-driven, eventstore, mongodb, dotnetcore, ddd, cqrs, domain-driven-design
Eventflow
Async/await first CQRS+ES and DDD framework for .NET
Stars: ✭ 1,932 (+1374.81%)
Mutual labels:  eventsourcing, eventstore, sagas, rabbitmq, ddd, cqrs, domain-driven-design
Event Sourcing Jambo
An Hexagonal Architecture with DDD + Aggregates + Event Sourcing using .NET Core, Kafka e MongoDB (Blog Engine)
Stars: ✭ 159 (+21.37%)
Mutual labels:  event-sourcing, event-driven, mongodb, dotnet-core, ddd, cqrs, domain-driven-design
Goes
Go Event Sourcing made easy
Stars: ✭ 144 (+9.92%)
Mutual labels:  event-sourcing, event-driven, eventsourcing, ddd, cqrs, domain-driven-design
eventuous
Minimalistic Event Sourcing library for .NET
Stars: ✭ 236 (+80.15%)
Mutual labels:  cqrs, ddd, eventstore, domain-driven-design, event-sourcing, eventsourcing
Akkatecture
a cqrs and event sourcing framework for dotnet core using akka.net
Stars: ✭ 414 (+216.03%)
Mutual labels:  event-sourcing, event-driven, dotnet-core, ddd, cqrs, domain-driven-design
Dotnet New Caju
Learn Clean Architecture with .NET Core 3.0 🔥
Stars: ✭ 228 (+74.05%)
Mutual labels:  event-sourcing, event-driven, mongodb, ddd, cqrs, domain-driven-design
Bifrost
This is the stable release of Dolittle till its out of alpha->beta stages
Stars: ✭ 111 (-15.27%)
Mutual labels:  event-sourcing, eventsourcing, eventstore, ddd, cqrs, domain-driven-design
Eventsourcing
A library for event sourcing in Python.
Stars: ✭ 760 (+480.15%)
Mutual labels:  event-sourcing, eventsourcing, ddd, cqrs, domain-driven-design
Pitstop
This repo contains a sample application based on a Garage Management System for Pitstop - a fictitious garage. The primary goal of this sample is to demonstrate several software-architecture concepts like: Microservices, CQRS, Event Sourcing, Domain Driven Design (DDD), Eventual Consistency.
Stars: ✭ 708 (+440.46%)
Mutual labels:  event-sourcing, event-driven, rabbitmq, ddd, cqrs
Quiz
Example real time quiz application with .NET Core, React, DDD, Event Sourcing, Docker and built-in infrastructure for CI/CD with k8s, jenkins and helm
Stars: ✭ 100 (-23.66%)
Mutual labels:  eventsourcing, rabbitmq, dotnetcore, ddd, cqrs
Rails event store
A Ruby implementation of an Event Store based on Active Record
Stars: ✭ 947 (+622.9%)
Mutual labels:  event-sourcing, event-driven, ddd, cqrs, domain-driven-design
Learning.EventStore
A framework for CQRS, Eventsourcing, and messaging that uses Redis pub/sub for messaging and offers event persistence in Redis, SQL Server, or PostgreSQL.
Stars: ✭ 58 (-55.73%)
Mutual labels:  cqrs, dotnetcore, eventstore, event-sourcing, event-driven
Eventhorizon
CQRS/ES toolkit for Go
Stars: ✭ 961 (+633.59%)
Mutual labels:  event-sourcing, eventsourcing, ddd, cqrs, domain-driven-design
Watermill
Building event-driven applications the easy way in Go.
Stars: ✭ 3,504 (+2574.81%)
Mutual labels:  event-sourcing, event-driven, sagas, rabbitmq, cqrs
ftgogo
FTGOGO - event-driven architecture demonstration application using edat
Stars: ✭ 82 (-37.4%)
Mutual labels:  cqrs, sagas, ddd, event-sourcing, event-driven
delta
DDD-centric event-sourcing library for the JVM
Stars: ✭ 15 (-88.55%)
Mutual labels:  cqrs, ddd, domain-driven-design, event-sourcing, eventsourcing
Modular Monolith With Ddd
Full Modular Monolith application with Domain-Driven Design approach.
Stars: ✭ 6,210 (+4640.46%)
Mutual labels:  event-sourcing, dotnetcore, ddd, cqrs, domain-driven-design
Netcoremicroservicessample
Sample using micro services in .NET Core 3.1 Focusing on clean code
Stars: ✭ 403 (+207.63%)
Mutual labels:  event-sourcing, eventsourcing, rabbitmq, dotnet-core, cqrs
Bankflix
Aplicação que simula um banco digital, contendo a área do cliente e administrativa, permitindo depósitos e transferências entre contas do mesmo banco. | Application that simulates a digital bank, containing the customer and administrative areas, allowing deposits and transfers between accounts of the same bank.
Stars: ✭ 82 (-37.4%)
Mutual labels:  mongodb, rabbitmq, dotnet-core, ddd, cqrs

EventFlow.Example

Hits GitHub issues Build Status PRs Welcome

DDD+CQRS+Event-sourcing examples using EventFlow following CQRS-ES architecture. It is configured with RabbitMQ, MongoDB(Snapshot store), PostgreSQL(Read store), EventStore(GES). It's targeted to .Net Core 2.2 and include docker compose file.

Event Sourcing/CQRS Architecture

The most common CQRS/ES architecture would look like following diagram OverallArchitecture

The example consists of the following concepts, each shown below

  • Aggregates
  • Command bus and commands
  • Synchronous subscriber
  • Event store (GES)
  • In-memory read model.
  • Snapshots (MongoDb)
  • Sagas
  • Event publising (In-memory, RabbitMq)
  • Metadata
  • Command bus decorator, custom value object, custom execution result, ...

Configuration

var resolver = EventFlowOptions.New
    .UseAutofacContainerBuilder(new ContainerBuilder())
    .Configure(c => c.ThrowSubscriberExceptions = true)
    .AddEvents(typeof(ExampleEvent))
    .AddEvents(typeof(ResetEvent))
    .AddCommands(typeof(ExampleCommand))
    .AddCommands(typeof(ResetCommand))
    .AddCommandHandlers(typeof(ExampleCommandHandler))
    .AddCommandHandlers(typeof(ResetCommandHandler))
    .ConfigureEventStore()
    .ConfigureMongoDb(client, SNAPSHOT_CONTAINER_NAME)
    .AddSnapshots(typeof(ExampleSnaphost))
    .UseMongoDbSnapshotStore()
    .RegisterServices(sr => sr.Register(i => SnapshotEveryFewVersionsStrategy.Default))
    .RegisterServices(DecorateCommandBus)
    .PublishToRabbitMq(RabbitMqConfiguration.With(new Uri(@"amqp://test:[email protected]:5672"), true, 4, "eventflow"))
    .UseInMemoryReadStoreFor<Aggregates.ReadModels.ExampleReadModel>()
    .AddJobs(typeof(ExampleJob))
    .CreateResolver());

📦 Stack

🤝 Contributing

  1. Fork it ( https://github.com/OKTAYKIR/EventFlow.Example/fork )
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create a new Pull Request

✨ Contributors

GitHub Contributors Image

Show your support

Please ⭐️ this repository if this project helped you!

📝 License

Apache-2.0 © Oktay Kır

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].