Bienvenue à Thoth !

Benjamin Cavy
OSS by MAIF
Published in
3 min readMar 8, 2021

English version of this article may be found here.

Aujourd’hui nous libérons Thoth, notre bibliothèque Java qui vous fournit l’ensemble des outils permettant d’implémenter l’event sourcing dans votre application.

Power your Java Apps with Event Sourcing

Plutôt que de maintenir un état applicatif, l’Event Sourcing propose de se concentrer sur “ce qui s’est passé” en stockant les événements qui ont mené à l’état applicatif plutôt que l’état en lui-même.

Cette approche offre un log d’audit by-design pour l’application.

Ce pattern fonctionne bien dans des architectures orientées événements : les événements peuvent être publiés tels quels.

L’event sourcing est également très adapté à la mise en place du CQRS, les projections de lecture peuvent être créées et mises à jour en consommant les événements.

Thoth vous permet de gérer une publication d’événements robuste : les événements sont stockés en base de données avant d’être publiés dans Kafka.
La publication dans Kafka sera retentée jusqu’à ce qu’elle réussisse

Thoth permet de définir deux types de projections :

  • Les projections en “Temps Réel” qui sont mises à jour dans la même transaction que l’événement.
  • Les projections “Cohérentes à terme” (eventually consistent) qui sont mises à jour de manière asynchrone en consommant Kafka.

Plus d’informations ici : https://github.com/maif/thoth
Vous trouverez des démos ici : https://github.com/maif/thoth/demo

L’autre bonne nouvelle, c’est que Thoth vient avec 3 autres bibliothèques Java que vous pouvez utiliser avec Thoth ou indépendamment :

Jooq Async

Jooq Async vous permet d’intégrer Jooq, le client Vertx Postgresql et Vavr. Grâce à cette bibliothèque, vous pouvez construire des requêtes à l’aide de Jooq et les exécuter dans un thread pool de taille réduite avec Vertx.

Plus d’informations ici : https://github.com/MAIF/jooq-async

Functional Json

Functional Json vous permet de manipuler du JSON selon un paradigme fonctionnel.

Il propose des méthodes utilitaires pour écrire / lire des noeuds JSON et permet une gestion élégante des erreurs.

Plus d’informations ici : https://github.com/MAIF/functional-json

Functional Validation

Functional Validation vous permet de définir des validations atomiques de beans et de les composer. Au final on obtient une validation réussie ou l’ensemble des erreurs qui ont été rencontrées au cours de la validation.

Functional Validation est compatible avec la spécification Bean Validation (JSR 303) et vous pouvez la composer avec une validation manuelle.

Plus d’informations ici : https://github.com/MAIF/functional-validation

L’event sourcing est au cœur de plusieurs de nos applications. Nous espérons que Thoth répondra à votre besoin et vous plaira !

Un Meetup pour découvrir Thoth

Si vous souhaitez voir Thoth en action, nous vous proposons un meetup #OSSbyMAIF en ligne sur le sujet le 24 mars à 17h. Vous pouvez vous inscrire ici.

--

--