GithubHelp home page GithubHelp logo

dm3 / rill Goto Github PK

View Code? Open in Web Editor NEW

This project forked from rill-event-sourcing/rill

0.0 3.0 0.0 3.39 MB

Clojure Event Sourcing toolkit

License: Eclipse Public License 1.0

Makefile 1.08% Clojure 98.92%

rill's Introduction

Rill Event Sourcing Toolkit

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

Latest stable release:

From version 0.1.7 on, the durable backends for rill are split out from the core, which only includes an in-memory backend.

[rill/rill "0.1.7"]
[rill/rill-psql "0.1.7"] ; to include postgres store

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.

Changelog

  • 0.1.7 Split out durable implementations in their own projects Fix performance bug when retrieving long event streams
  • 0.1.6 Generalize process managers into observer/notifications
  • 0.1.5 Improved command-result= testing function
  • 0.1.4 Auto-retry queries when streaming all events in psql event store
  • 0.1.2 Add process managers
  • 0.1.1 Uknown
  • 0.1.0 First beta release

rill's People

Contributors

joodie avatar remvee avatar heliosmaster avatar studyflowinfo avatar studyflowjenkins avatar popl7 avatar

Watchers

Vadim avatar James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.