Molten is an opinionated library providing reactive tooling to simplify building production-ready integration solutions using Reactor. It builds on other libraries to make reactive caching, instrumentation, tracing, health checks, and HTTP client creation simple. It also provides implementations for several reactive integration patterns (e.g. request collapsing). Molten requires Java 11+ to be used.
Some libraries building on:
- Reactive streams
- Resiliency
- Caching
- HTTP client
- Metrics
- Tracing
- Misc
To build Molten you should have the followings available:
- JDK 11+
- Maven 3.6.1+ (or use provided
mvnw
) - Docker 1.6.0+ (see TestContainers system requirements)
To compile the library and run all tests execute the following:
./mvnw clean verify
To also package the library execute:
./mvnw clean install
For your convenience there's a BOM (Bill of Materials) to import consistent module and dependency versions (defines reactor and resilience4j as well).
<dependency>
<groupId>com.expediagroup.molten</groupId>
<artifactId>molten-bom</artifactId>
<version>${molten.version}</version>
<scope>import</scope>
<type>pom</type>
</dependency>
To define all dependency versions consistently, one can use the dependencies BOM:
<dependency>
<groupId>com.expediagroup.molten</groupId>
<artifactId>molten-dependencies</artifactId>
<version>${molten.version}</version>
<scope>import</scope>
<type>pom</type>
</dependency>
- molten-core - core reactive solutions (e.g. request collapsers)
- molten-cache - reactive cache support (e.g. reloading cache)
- molten-health - reactive health-check
- molten-http-client - reactive http client builder
- molten-metrics - reactive metrics support
- molten-remote-cache - reactive off-heap cache support (e.g. redis)
- molten-spring-boot - Spring Boot 2 integration support
- molten-trace - reactive tracing support
- molten-test - reactive test support
- molten-test-mockito-autoconfigure - auto-configured Mockito for reactive test support
- molten-trace-test - reactive tracing test support
Please note that types and methods annotated with @com.hotels.molten.core.common.Experimental
are considered unstable and might change without further notice.
Please refer to our CONTRIBUTING file.
This project is available under the Apache 2.0 License.
Copyright 2020 Expedia, Inc.
To add/update licence headers use:
mvn license:format