Skip to content
forked from MAIF/thoth

Event sourcing in java with vavr, akka stream and vertx reactive PG driver

License

Notifications You must be signed in to change notification settings

Gregnarok/thoth

 
 

Repository files navigation

Event sourcing github-action-badge jar-badge

thoth

This repository provides tools to implement event sourcing in your application.

It guaranties that:

  • Events will be written in the database before being published in Kafka
  • Publication in Kafka will be reattempted until it succeeds

It provides capabilities of defining two types of projections:

  • "Transactional" projections, that are updated in the same transaction as the events
  • "Eventually consistent" projections, updated asynchronously by consuming Kafka

It also allows storing snapshots of the application state, for scenarios that implies lot of events.

These libs are based on :

  • Vavr for functional stuff (immutable List, Either, Future)
  • Akka stream for reactive streams
  • jackson for json
  • jooq to build query
  • vertx for reactive postgresql database access
  • Postgresql and kafka are the in production tested data stores

Modules

  • commons-event: POJOs that represent the stored events. Can be used by consumers to parse events.
  • thoth-core: APIs for event-sourcing
  • thoth-jooq: A jooq simple implementation of the thoth-core APIs
  • thoth-jooq-async: A jooq implementation of the thoth-core APIs using the jooq-async-apiinterface

Documentation

See our documentation.

Limits

  • A single command can't currently modify multiple entities see this issue

Development

Compile / Test

sbt compile
docker-compose -f docker-compose.test.yml up 
sbt test

Test rerun on each changes

sbt ~test

About

Event sourcing in java with vavr, akka stream and vertx reactive PG driver

Resources

License

Code of conduct

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Java 92.1%
  • Scala 3.5%
  • CSS 3.4%
  • Other 1.0%