https://github.com/rill-event-sourcing/rill
Clojure Event Sourcing toolkit
https://github.com/rill-event-sourcing/rill
Last synced: 8 months ago
JSON representation
Clojure Event Sourcing toolkit
- Host: GitHub
- URL: https://github.com/rill-event-sourcing/rill
- Owner: rill-event-sourcing
- License: epl-1.0
- Created: 2014-12-12T16:15:05.000Z (over 11 years ago)
- Default Branch: master
- Last Pushed: 2018-06-06T15:02:51.000Z (about 8 years ago)
- Last Synced: 2025-10-21T21:06:56.407Z (8 months ago)
- Language: Clojure
- Size: 3.37 MB
- Stars: 88
- Watchers: 12
- Forks: 4
- Open Issues: 3
-
Metadata Files:
- Readme: README.org
- Changelog: CHANGES.org
- License: LICENSE
Awesome Lists containing this project
- awesome_cqrs - rill-event-sourcing/rill: Clojure Event Sourcing toolkit
README
#+TITLE: Rill Event Sourcing Toolkit
#+CAPTION: Build status
[[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.
#+BEGIN_SRC clojure
[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
#+END_SRC
* 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.