A Quarkus extension for writing and managing distributed applications.
Flamme is a Quarkus extension which addresses the current problems in modern microservice architectures. It provides a programming model which can server as a basis for a distributed runtime.
A Flamme application is composed of several components. A component is represented by a Java interface annotated with @Flamme, containing a single method that uses Map<String, Message> (a MultiPayload) for both its argument and return types.
Flamme is network agnostic and event-driven — you do not write networking or serialization code. Instead, you declare within the @Flamme annotation which subjects a component subscribes to and publishes to. The framework handles the remaining infrastructure logic.
Using runtime configurations, you can decide which components are co-located in the same process/pod or split across different ones. Flamme ensures all components communicate regardless of their location — via NATS for remote components or direct method invocation for local ones.
Add the Flamme dependency to the pom.xml of your quarkus application:
<dependency>
<groupId>io.github.amadeusitgroup</groupId>
<artifactId>flamme</artifactId>
<version>${flamme.version}</version>
</dependency>Use the latest release version, available on the releases page.
- Java 21+
- Maven 3.9+
- Docker
- A running NATS server (for distributed deployments)
You can find an example application and instructions on how to run it here.
Full documentation is available at amadeusitgroup.github.io/flamme.
This project is published under the MIT License.