Molten
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
Requirements
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)
Build
To compile the library and run all tests execute the following:
./mvnw clean verify
To also package the library execute:
./mvnw clean install
Usage
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>
Modules
- 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
Test support modules
- molten-test - reactive test support
- molten-test-mockito-autoconfigure - auto-configured Mockito for reactive test support
- molten-trace-test - reactive tracing test support
Experimental features
Please note that types and methods annotated with @com.hotels.molten.core.common.Experimental
are considered unstable and might change without further notice.
Contributing
Please refer to our CONTRIBUTING file.
License
This project is available under the Apache 2.0 License.
Copyright 2020 Expedia, Inc.
To add/update licence headers use:
mvn license:format