Eventstore
What is Eventstore?
Sliceworkz Eventstore is an open source eventstore implementation in Java.
- If’re you’re into eventsourcing, have a look at our quickstart guide and documentation to get started.
- If you’re new to eventsourcing, do yourself a favor and learn about it
Features
- Fully compliant with DCB, the Dynamic Consistency Boundary specification
- Fully typed access to Event via EventStreams, checked by the compiler
- Event Query capabilities on event Types and Tags, with a fluent builder and paged reads
- Optimistic locking on Event appends, atomic under concurrency, with
head()to pin a boundary before deciding - Built-in upcasting of legacy events, across chains of versions
- Stored event names decoupled from class names with
@EventName - Idempotent appends scoped per event stream, a batch de-duplicated as a unit
- Bookmarks with a read position — a reader resumes from the last event it handled, and its lag is counted from how far it has read — even before it has handled anything
- Import and migration between storage backends, preserving event identity
- Leader election on named leases, with fencing tokens and priority-based handover
- GDPR erasure by crypto-shredding — personal data encrypted per data subject, erased by destroying keys, never by rewriting events
- Reader entitlement — services that may not see personal data read the events with it withheld
Technical
- Pure Java implementation
- Lightweight with minimal dependencies — the API carries SLF4J and no metrics library; every jar declares an
Automatic-Module-Name - Postgres-based database storage — PostgreSQL 16+ supported, with native server-side
uuidv7()on 18+ and a Java-side fallback on 16–17 (auto-detected at startup) - In-Memory storage for development and unit-testing
- File-persisted in-memory storage for local development without PostgreSQL
- Explicit lifecycle: storage, store and stream are all
AutoCloseable - Observability through an SPI of its own — bind Micrometer, OpenTelemetry or anything else with an
EventStoreObserver - Measured performance — a benchmark suite behind every design choice, from stream layout to the shape of the consistency check
- Published test module: a
given/when/thenfixture for applications, and a TCK for custom storage backends