Evento

Get Started

A RECQ system needs a Message Gateway and a System State Store — Evento Server provides both — plus your components, built with the Evento bundle library.

Docker

1 · Run Evento Server

Evento Server ships as a Docker image backed by Postgres. This compose file gives you a full development environment — server API and GUI on port 3000, component bus on 3030:

services:
  evento-db:
    image: 'postgres:latest'
    restart: always
    environment:
      - POSTGRES_PASSWORD=secret
      - POSTGRES_DB=evento
    volumes:
      - ./data/postgres:/var/lib/postgresql/data/
  evento-server:
    image: 'eventoframework/evento-server:latest'
    restart: on-failure
    depends_on:
      - evento-db
    environment:
      - evento_cluster_name=evento-server
      - evento_performance_capture_rate=1
      - evento_telemetry_ttl=365
      - evento_security_signing_key=MY_JWT_SECRET_TOKEN_SEED
      - spring_datasource_url=jdbc:postgresql://evento-db:5432/evento
      - spring_datasource_username=postgres
      - spring_datasource_password=secret
    ports:
      - '3000:3000'
      - '3030:3030'

In Evento v2, bundles register themselves with the server at runtime over the message bus — no JAR upload, no deployment scripts. Scaling bundle instances is delegated to your orchestrator (e.g. Kubernetes or Nomad).

Maven Central

2 · Add the bundle library

The evento-bundle library hosts your components and connects them to the server. It requires Java 25+ and is framework-agnostic — use it with Spring, Micronaut, Quarkus or plain Java.

Gradle

implementation group: 'com.eventoframework', name: 'evento-bundle', version: '2.3.0'

Maven

<dependency>
    <groupId>com.eventoframework</groupId>
    <artifactId>evento-bundle</artifactId>
    <version>2.3.0</version>
</dependency>

3 · Start your bundle

Point the bundle at your server and your annotated components — Aggregates, Projectors, Projections, Sagas, Services, Observers, Invokers — are discovered, registered and wired automatically:

EventoBundle.Builder.builder()
        .setBasePackage(TodoApplication.class.getPackage())
        .setBundleId("todo-bundle")
        .setBundleVersion(1)
        .setEventoServerAddress("localhost:3030")
        .start();

Do you find Evento Framework and RECQ Architectures interesting?

Evento Framework is FREE and Open Source. You can always support the project by giving a star on GitHub or contributing to the code base.