Go Makefile
Switch branches/tags
Nothing to show
Clone or download
Latest commit b86fb78 Jun 8, 2018
Permalink
Failed to load latest commit information.
aggregatestore Fix event publisher in aggregatestore/model Mar 28, 2018
commandhandler Add AUTHORS file Mar 21, 2018
docs Add presentation from a talk Oct 27, 2017
eventbus/local Add AUTHORS file Mar 21, 2018
eventhandler Add AUTHORS file Mar 21, 2018
eventstore Use globalsign/mgo instead of labix/mgo Mar 21, 2018
examples Use globalsign/mgo instead of labix/mgo Mar 21, 2018
httputils Add AUTHORS file Mar 21, 2018
middleware Add AUTHORS file Mar 21, 2018
mocks Add AUTHORS file Mar 21, 2018
publisher Use gomodule/redigo instead of garyburd/redigo Mar 21, 2018
repo Use globalsign/mgo instead of labix/mgo Mar 21, 2018
utils Add AUTHORS file Mar 21, 2018
.gitignore Use Dep instead of Glide for vendoring Dec 19, 2017
AUTHORS Add AUTHORS file Mar 21, 2018
CHANGES.md Update CHANGES.md Sep 18, 2016
CODE_OF_CONDUCT.md Add contribution guidelines Mar 21, 2018
CONTRIBUTING.md Add contribution guidelines Mar 21, 2018
Gopkg.lock Use gomodule/redigo instead of garyburd/redigo Mar 21, 2018
Gopkg.toml Use gomodule/redigo instead of garyburd/redigo Mar 21, 2018
LICENSE Initial commit Nov 17, 2014
Makefile Add makefile command for updating the docker images Aug 27, 2017
PULL_REQUEST_TEMPLATE.md Add contribution guidelines Mar 21, 2018
README.md Only show Werker status of master branch in readme Mar 21, 2018
aggregate.go Add AUTHORS file Mar 21, 2018
aggregate_test.go Add AUTHORS file Mar 21, 2018
command.go Add AUTHORS file Mar 21, 2018
command_test.go Add AUTHORS file Mar 21, 2018
commandhandler.go Add AUTHORS file Mar 21, 2018
commandhandler_test.go Add AUTHORS file Mar 21, 2018
context.go Add AUTHORS file Mar 21, 2018
context_test.go Add AUTHORS file Mar 21, 2018
entity.go Add AUTHORS file Mar 21, 2018
event.go Add AUTHORS file Mar 21, 2018
event_test.go Add AUTHORS file Mar 21, 2018
eventbus.go Add AUTHORS file Mar 21, 2018
eventhandler.go Add AUTHORS file Mar 21, 2018
eventhandler_test.go Add AUTHORS file Mar 21, 2018
eventstore.go Add AUTHORS file Mar 21, 2018
go.mod Add basic go.mod file Jun 8, 2018
matcher.go Add AUTHORS file Mar 21, 2018
matcher_test.go Add AUTHORS file Mar 21, 2018
publisher.go Add AUTHORS file Mar 21, 2018
repo.go Add AUTHORS file Mar 21, 2018
uuid.go Add AUTHORS file Mar 21, 2018
uuid_test.go Add AUTHORS file Mar 21, 2018
wercker.yml Use Dep instead of Glide for vendoring Dec 19, 2017

README.md

wercker status Coverage Status GoDoc Go Report Card

Event Horizon

Event Horizon is a CQRS/ES toolkit for Go.

NOTE: Event Horizon is used in production systems but the API is not final!

CQRS stands for Command Query Responsibility Segregation and is a technique where object access (the Query part) and modification (the Command part) are separated from each other. This helps in designing complex data models where the actions can be totally independent from the data output.

ES stands for Event Sourcing and is a technique where all events that have happened in a system are recorded, and all future actions are based on the events instead of a single data model. The main benefit of adding Event Sourcing is traceability of changes which can be used for example in audit logging. Additionally, "incorrect" events that happened in the past (for example due to a bug) can be compensated for with an event which will make the current data "correct", as that is based on the events.

Read more about CQRS/ES from one of the major authors/contributors on the subject: http://codebetter.com/gregyoung/2010/02/16/cqrs-task-based-uis-event-sourcing-agh/

Other material on CQRS/ES:

Inspired by the following libraries/examples:

Suggestions are welcome!

Usage

See the example folder for a few examples to get you started.

Storage drivers

These are the drivers for storage of events and entities.

Local / in memory

There are simple in memory implementations of an event store and entity repo. These are meant for testing/experimentation.

MongoDB

Fairly mature, used in production.

AWS DynamoDB

Experimental support for AWS DynamoDB as an event store. Not actively developed.

Messaging drivers

These are the drivers for messaging, currently only publishers.

Local / in memory

Fully synchrounos. Useful for testing/experimentation.

Redis

Fairly mature, used in production.

GCP Cloud Pub/Sub

Experimental driver.

Get Involved

License

Event Horizon is licensed under Apache License 2.0

http://www.apache.org/licenses/LICENSE-2.0