An example to help me understand NServiceBus using Event Sourcing and various persistence technologies
C# Ruby ASP
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
.nuget
src
tests
tools
.gitignore
.tfignore
README.md
Solution.ncrunchsolution
Solution.sln
rakefile.rb

README.md

ABOUT

*Please take the domain modelling in this example with a "pinch of salt". *NServiceBus has documentation about configuring your system with permissions for msmq and things.

SQL Setup scripts inside the Setup/mssql folder if you want to try MSSQL.

The immediate goal is to look into different ways an EDA approach can help.

One fork in the road is looking at the application of Event Sourcing and how to efficiently use this whilst migrating away from legacy systems.

  • To do this I have used Simple CQRS by Greg Young as a guide to the AggregateRoot and Services Design
  • Made some slight amendments around the Replaying of events
  • Took the AsDynamic extension method as a whole from Simple CQRS -- Using this as opposed to eplicility wiring up the handlers to events in the derived classes

This project has abstacted the persistence implementations for the Event Store and the Read Layer creation.

  • Looking at what technologies fit best for different situations

Currently using MSSQL For:

  • Event Store (ADO.NET)
  • Read Layer (EF 4)

Moving Forward Looking at:

  • Redis, Mongo, Couchbase etc... for both the Event Store and Read Layers

Key Value Stores for the Event Store seem a really good fit.

Currently this is is all Happy Path scenarios so little to no validation is put on the command logic

  • There is one small bit inside of the AccommodationLead Domain Object

This does provide a nice base to start looking into other parts including:

  • Event Sourcing with DDD
  • Deployments with NServiceBus
  • Testing with Event Driven Architectures
  • How to use this approach to move away from a legacy system with safe migration

    Also want to look at implementing this with:

    • Node.js + Rabbitmq
    • Python + (twisted||flask) + zeromq