This project contains various addons to Akka useful when working with:
- Cluster
- Sharding
- Persistence and Eventsourcing
- Serializing
This code has turned out to be quite useful for NextGenTel and is used in production.
Akka | akka-tools | branch |
---|---|---|
2.5 | 2.5.x.x | master |
2.4 | 1.1.2 | 1.1 |
The changes can be found in this file.
Info about how to migrate your source from akka-tools 1.0.x to 1.1.x can be found in MIGRATION-info.md.
Below is a summary of the various modules
akka-tools-persistence's main purpose is to make Akka Persistence more easy to use.
The main components are:
- GeneralAggregate - which is built on top of PersistentActor
- GeneralAggregateView - which is built on top of PersistentQuery
It includes features like:
- Separation of aggregate, view and state(machine)
- both aggregate and view understands the same events and uses the same "state machine"
- integrated cluster/sharding-support
- Simplified AtLeastOnceDelivery-support
- Automatic starting and stopping (of idle) aggregates and views
- Automatic working view that supports getting the current state (ie. to be used from REST) and the full event history (nice when debugging)
akka-tools-json-serializing is an Akka Serializer implementation that uses Jackson Json.
Json is a good match for evolving data-structures, but this serializer also supports coded data-structure-upgrading
akka-tools-jdbc-journal is a JDBC journal-plugin for Akka Persistence.
When used together with akka-tools-json-serializing, it also writes the json as 'plain-text' so that a human can understand the written data.
It supports Persistence Query with EventsByTagQuery (Also multiple tags in the same stream) amongst others
akka-tools-cluster contains cluster-related utilities like:
- dynamic seedNode-resolving
- Split-brain detection and recovering
- ClusterSingletonHelper
examples contains example code