Clojure Event Sourcing toolkit
Clojure PLpgSQL Shell
Permalink
Failed to load latest commit information.
doc Remove generated files in master branch Oct 29, 2015
src/rill Ensure event store implementations return timestamped events Dec 29, 2016
test/rill 0.2.3-RC1 Added mysql backend. Updated clojure.java.jdbc version Dec 8, 2016
.gitignore Add travis-ci support (needs badge) Sep 17, 2015
.travis.yml 0.2.3-RC1 Added mysql backend. Updated clojure.java.jdbc version Dec 8, 2016
CHANGES.org Ensure event store implementations return timestamped events Dec 29, 2016
LICENSE Add license Dec 12, 2014
README.org 0.2.3-RC1 Added mysql backend. Updated clojure.java.jdbc version Dec 8, 2016
deploy.sh Setup clojars credentials and deployment script Dec 17, 2015
project.clj

README.org

Rill Event Sourcing Toolkit

https://travis-ci.org/rill-event-sourcing/rill.svg

A Clojure foundation for CQRS/Event Sourcing.

This is an alpha release.

We are using Rill in production but things are still in flux. Breaking changes to the API are likely, though we have every intention of making upgrades straightforward.

Documentation is missing for almost everything.

Dependency specification

0.2.3-RC1 Updates clojure.java.jdbc from 0.3.4 to 0.7.0-alpha1

Note that this is a breaking update of clojure.java.jdbc; many functions have slightly different signatures!

Changed group-id and artifact-ids

Please note that we changed group-id and artifact-ids for the 0.2.0 release, where we also split up the old rill/rill artifact into its separate components.

[rill-event-sourcing/rill.event_store "0.2.3-RC1"] ; if you're talking to the bare event-store
[rill-event-sourcing/rill.handler "0.2.3-RC1"] ; pulls in the write side of CQRS
[rill-event-sourcing/rill.event_store.memory "0.2.3-RC1"] ; for development
[rill-event-sourcing/rill.temp_store "0.2.3-RC1"] ; for testing
[rill-event-sourcing/rill.event_store.psql "0.2.3-RC1"] ; to include postgres backend
[rill-event-sourcing/rill.event_store.psql "0.2.3-RC1"] ; to include mysql backend
[rill-event-sourcing/rill.event_channel "0.2.3-RC1"] ; for hooking up asynchronous read side

Rill provides protocols and/or implementations for:

EventStore

The system of record in an Event Sourcing architecture; a collection of event streams with provisions for appending and retrieving events.

Rill provides two complete implementations of the EventStore protocol; an ephemeral, in-memory store for testing/development, and a durable implementation using Postgresql as a backing store.

Repository

Aggregate storage implemented on top of an EventStore. Aggregates are implemented as reductions of event streams.

Command handler

Rill implements a fairly simple command -> repository -> aggregate -> events loop for evaluating commands and storing the resulting events in the event store. Synchronous event triggers are implemented with the provisional observers hook.

Messages; commands and events

Rill provides mechanisms for defining message schemas and hooks for integrating messages with the command handler, event store and repository.

Event Channels

Event channels are core/async channels that provide “real time” views on event streams.