Chronik v0.1.11 Chronik View Source
A lightweight EventSourcing/CQRS micro framework for Elixir.
Chronik is composed of four components:
The
Chronik.Storewhich is an persisted data store for domain events. Two adapters are provided:Chronik.Store.Adapters.EctoChronik.Store.Adapters.ETS
The
Chronik.PubSubwhich publishes the domain events generated byChronik.Aggregate. InChronikthere is only one topic on the PubSub: a stream-all. This provides a global order of the events. Chronik provides aRegistrybased adapterChronik.PubSub.Adapters.Registry.The
Chronik.Aggregatemodules which provides the abstraction of an aggregate. Aggregates receive and validate commands based on its current state. If the command is accepted, a number of domain events are generated, stored and published. Finally, the aggregate transitions to the next desirable state.The
Chronik.Projectionimplements a read model on theChronik.PubSub. The domain events are processed in order. Missing events are fetch fromChronik.Store.
Debugging can be turned off by placing the following in a config script:
config :chronik, :debug, false
Link to this section Summary
Types
A command in Chronik is a 3 element tuple with the following
format: {:cmd, arg1 arg2}
Domain events can have any shape
The id represents an aggregate identifier
Link to this section Types
A command in Chronik is a 3 element tuple with the following
format: {:cmd, arg1 arg2}
Domain events can have any shape
The id represents an aggregate identifier