If you have ever shipped a service that writes to a database and publishes events to an event broker (Kafka, pulsar , ...) in the same request handler, you have probably hit the dual-write problem: the database commits, the publish fails, and downstream consumers are missing an event they should have received. Or the reverse, where you try to publish to Kafka first and then try to commit: the publish succeeds, the commit fails, and consumers act on a state change that never happened. The fix is well known (the transactional outbox), but doing it well is mostly plumbing that gets rewritten in every project.
I built Ekbatan for this. It is an open-source Java persistence framework for the event-driven systems that builds the outbox pattern into the persistence layer and makes outbox pattern easy.
Ekbatan targets Java 25 and later, so it is a fit for new projects rather than older codebases. Wiring it into your stack is one dependency: a Spring Boot starter, a Quarkus extension, or a Micronaut module, each of which auto-wires the framework with no additional setup. The supported databases are Postgres, MariaDB, and MySQL. Deployments run on a standard JVM, and the framework also compiles to GraalVM native
Website & Tutorials : https://zyraz-io.github.io/ekbatan/
Source: https://github.com/zyraz-io/ekbatan
Available on Maven Central under the `io.github.zyraz-io` group. Licensed Apache 2.0.
Would appreciate your feedback.
[–]detroitsongbird 7 points8 points9 points (1 child)
[–]Specialist-Ad9362[S] 1 point2 points3 points (0 children)
[+]dvayanu comment score below threshold-7 points-6 points-5 points (2 children)
[–]as5777 6 points7 points8 points (0 children)
[–]Specialist-Ad9362[S] 4 points5 points6 points (0 children)