2025-11-07
MicroProfile est un ensemble de spécifications (SmallRye / Eclipse) qui complète Jakarta EE pour les architectures microservices : configuration externalisée, tolérance de panne, métriques, santé, documentation OpenAPI et sécurité légère.
Quarkus fournit d’excellentes intégrations MicroProfile (SmallRye implementations), optimisées pour le démarrage rapide et la compilation native.
Objectifs du cours :
quarkus:devmvn io.quarkus:quarkus-maven-plugin:3.0.0.Final:create \
-DprojectGroupId=com.example \
-DprojectArtifactId=mp-quickstart \
-DclassName="com.example.GreetingResource" \
-Dextensions="resteasy-reactive, smallrye-openapi, smallrye-health, smallrye-metrics, smallrye-config, smallrye-fault-tolerance, smallrye-jwt, rest-client"Note : adaptez la version Quarkus selon votre projet. Les extensions SmallRye apportent les implémentations MicroProfile.
MicroProfile Config permet d’injecter des valeurs depuis application.properties, variables d’environnement, ou autres sources.
application.properties :
greeting.message=Bonjour
Dans Quarkus, application.properties est la source préférée mais MP Config s’intègre aussi aux variables d’environnement.
MicroProfile Health expose des endpoints permettant d’évaluer la santé des services.
import org.eclipse.microprofile.health.HealthCheck;
import org.eclipse.microprofile.health.HealthCheckResponse;
import org.eclipse.microprofile.health.Liveness;
@Liveness
@ApplicationScoped
public class LivenessCheck implements HealthCheck {
@Override
public HealthCheckResponse call() {
return HealthCheckResponse.up("application");
}
}Endpoints fournis par Quarkus (SmallRye Health) :
Exemples avancés : vérifier accès base de données, file d’attente, connexions externes.
Expose des métriques applicatives (Prometheus, Micrometer adapter possible).
Quarkus expose les métriques à :
Ces métriques peuvent être récupérées par Prometheus.
API pour gérer latences, échecs réseau, retries, timeouts, fallback et circuit breakers.
import org.eclipse.microprofile.faulttolerance.Retry;
import org.eclipse.microprofile.faulttolerance.Timeout;
import org.eclipse.microprofile.faulttolerance.Fallback;
@ApplicationScoped
public class RemoteService {
@Retry(maxRetries = 3)
@Timeout(2000)
@Fallback(fallbackMethod = "fallbackResponse")
public String callExternal() {
// appel HTTP externe
}
public String fallbackResponse() {
return "service-unavailable";
}
}Quarkus SmallRye Fault Tolerance implémente ces annotations et expose des métriques de tolérance.
Permet d’écrire des clients REST typés via une interface Java.
Injection :
Configuration (application.properties) :
com.example.InventoryClient/mp-rest/url=http://inventory:8080
Quarkus supporte aussi la version reactive des Rest Clients.
Génère automatiquement une documentation OpenAPI à partir des ressources JAX-RS et des annotations.
smallrye-openapi/q/openapi (spec JSON) et /q/swagger-ui (interface)Exemple minimal :
OpenAPI sera exposé automatiquement ; on peut enrichir via @Operation, @APIResponse, etc.
MicroProfile JWT simplifie l’authentification basée sur tokens JWT.
quarkus-smallrye-jwtConfiguration minimale (application.properties) :
mp.jwt.verify.publickey.location=META-INF/resources/publicKey.pem
quarkus.http.auth.permission.roles.paths=/secure/*
quarkus.http.auth.permission.roles.policy=roles
Quarkus fournit aussi des helpers pour (dev) générer des tokens via SmallRye JWT tooling.
/q/metrics)/q/health)/q/openapi + /q/swagger-ui)Un petit service demo :
GET /greet → greeting message (MP Config)GET /q/health/ready → readinessGET /q/metrics → metricsGET /q/openapi → OpenAPI JSONGET /secure → resource protégée par JWTmvn quarkus:dev (hot reload)quarkus.log.category."org.eclipse.microprofile".level=DEBUG
E. Bruno - MicroProfile pour les microservices (contexte Quarkus)