This project is a Quarkus framework based, 'ready-to-play' micro-service.
| Name | Version |
|---|---|
| Java | 21 |
| Maven | 3.8.1+ |
| Quarkus | 3.27.1 (LTS) |
| PostgreSQL | 17.6 |
| Valkey | 7.2.10 |
| Testcontainers | 2.0.x |
Starting from Quarkus 3.20.x this project main branch will be using only LTS version.
Separate edge branch will be using latest versions, and when it will reach next LTS one it will be merged to main.
- REST controller with multiple endpoints (official guide)
- JSON serialisation using Jackson
- YAML-based configuration (official guide)
- Database with Flyway migration support (official guide)
- H2 database for test scope
- Health check endpoints (official guide)
- Scheduled tasks configured to use Unix Crontab syntax (official guide)
- Redis/Valkey client with health indicator (official guide)
- OpenTelemetry support (official guide)
- EventBus (alternative to Spring's ApplicationEvent system, official guide)
- Qute templating engine (special-for-Quarkus alternative to Freemarker or Mustache engines, official guide)
This service contains multiple features which requires some specific servers to be available and resolvable:
| Feature | Requirement | How to run in Docker | How to disable |
|---|---|---|---|
| Database | PostgreSQL | postgres.md | - required - |
| Valkey | Valkey server | valkey.md | |
| OpenTelemetry | Jaeger server | jaeger.md | |
| Metrics | Prometheus | metrics.md | quarkus.micrometer.enabled=false |
These endpoints are available via following URLs:
GET http://localhost:8080/q/health
GET http://localhost:8080/q/health/live
GET http://localhost:8080/q/health/ready
Also, there is Health UI provided too:
http://localhost:8080/q/health-ui/
This service contains two Dockerfile-s, more details on the separate page.
- Lombok + Mapstruct (with Mapstruct's CDI mode)
List of features I am planning to add:
- Async controller endpoints
- Hibernate ORM with Panache (official guide)
- WebSocket support
- AMPQ support
- Migrate to multi-module Maven project
- Native Build with GraalVM
mvn clean verify -Dnativesudo apt install zlib1g-devexport DB_USERNAME=...
export DB_PASSWORD=...
./target/quarkus-micro-service-1.0.0-runnerQuarkus does not support/provide:
-
Redis as a persistence layer for caching extension. It means you can't use Quarkus
@Cache**annotations with underlying Redis. And Quarkus itself will not allow to implement such layer easily - caching extension does not accept customCacheManageror cache types. -
AOP (AspectJ) as Spring does. Partially similar behavior could be achieved via Interceptors, but it is still quite a different thing...
See the LICENSE file for license rights and limitations (MIT).