Giter Site home page Giter Site logo

maif / thoth Goto Github PK

View Code? Open in Web Editor NEW
30.0 9.0 9.0 2.29 MB

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

Home Page: https://MAIF.github.io/thoth/

License: Apache License 2.0

Scala 0.34% Java 96.96% Shell 0.03% CSS 2.07% StringTemplate 0.59%
functional-programming event-sourcing java postgresql akka-streams kafka

thoth's Introduction

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

./gradlew compileJava
docker-compose -f docker-compose.test.yml up 
./gradlew test

Generate the documentation

cd thoth-documentation
sbt generateDoc

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.