Skip to content

henrymsiska/akka-ddd

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

akka-ddd Build Status

Reusable artifacts for building applications on top of Akka platform following a CQRS/DDDD-based approach.

Core functionality originally developed as part of DDD Leaven Akka project.

Used by: DDD Leaven Akka Ver 2

Modules overview

akka-ddd-messaging

Contains base types for commands and events and their envelopes ( command/event messages ). This module should be used on both write and read side of the application.

akka-ddd-core

Contains core artifacts used on write side of the application:

  • AggregateRoot trait - abstract persistent, event sourced actor responsible for processing commands received from the office. Implementation of AggregateRoot trait represents concrete business entity (i.e Reservation, Product, etc) See example AR: DummyAggregateRoot

  • Office - an actor that is used by the client to talk to Aggregate Roots of particular class. See Don't call me, call my office for explanation. There are two office implementations: "local" (used for testing) and "global" / distributed (implemented on top of Akka Sharding)

  • Receptor - allows one office to react on events occurred in another office. Receptor is capable of filtering input events received from configured event stream, transforming them into arbitrary output messages and routing output messages to configured fixed or dynamic (derived from the message) destination. To make configuration of these capabilities straightforward ReceptorBuilder provides simple DSL. Here you can find an example configuration of typical receptor that receives event from one office and sends command to another office. Actual logic of reading events from event stream is pluggable - EventStreamSubscriber must be mixed into Receptor class. Ready to use EventstoreSubscriber is provided by eventstore-akka-persistence module.

  • Saga - implementation of Saga / Process Manager pattern. See: Saga - big picture

eventstore-akka-persistence

Incorporates Akka Persistence journal and snapshot-store backed by Event Store. Provides JSON Serializer that needs to be registered as Akka custom serializer for akka.persistence.PersistentRepr (wrapper class that is used by Akka Persistence to store event in the journal). Json format is natural choice for Event Store as it enables creating user projections using javascript directly in Event Store. Provides also EventstoreSubscriber that should be mixed into Reactor and SagaManager (available in akka-ddd-core).

akka-ddd-scheduling

Provides durable scheduler (backed by Event Store!) that is typically used by Saga to schedule timeout/deadline messages. See: Durable Scheduler - big picture.

view-update

Generic artifacts for building view update services that consume events from Event Store and update a configured view store (i.e. Sql database). See: View Update Service - big picture

view-update-sql

Sql (defult is Postgresql) specific implementation of view-update artifacts.

akka-ddd-test

Allows easy creation of test of Aggregate Root implementations. Supports both "local" and "global" offices. See DummyOfficeSpec.

akka-ddd-write-front

Artifacts for building http server with use of Akka Http and Akka Cluster Client responsible for handling commands sent as json messages. Provides infrastructure for demarshalling commands and forwarding them to write-backend application.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Scala 98.8%
  • JavaScript 1.2%