2026-11-07
À la fin de cette leçon, vous serez capable de :
@ConfigProperty) — cœur, mis en œuvre dans le TP.Comment suivre cette leçon : ce document est le cœur conceptuel de MicroProfile sous Quarkus. Il s’accompagne d’un TP pratique (
04_java_MicroProfile_P_microprofile-demo.qmd) ; la sécurité est développée dans la leçon 05 (05_java_Security_L_Introduction.qmd).
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.
La commande normative figure dans le TP (Étape 1). Les extensions Fault Tolerance et Rest Client ne s’ajoutent que dans les Prolongements (optionnel).
Note : adaptez la version Quarkus selon votre projet. Les extensions SmallRye apportent les implémentations MicroProfile.
Un même service tourne en dev, test et prod avec des URLs et des secrets différents : comment éviter de recompiler pour chaque environnement ?
MicroProfile Config permet d’injecter des valeurs depuis application.properties, variables d’environnement, ou autres sources.
application.properties :
Dans Quarkus, application.properties est la source préférée mais MP Config s’intègre aussi aux variables d’environnement.
L’orchestrateur (Kubernetes) doit savoir si votre pod est vivant et s’il peut recevoir du trafic.
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.
Comment savoir en production qu’un endpoint ralentit ou est surappelé ?
Expose des métriques applicatives (Prometheus, Micrometer adapter possible).
Prometheus est un système de monitoring open source qui interroge périodiquement (« scrape ») des endpoints HTTP pour collecter des métriques. Un microservice expose donc les siennes sur /q/metrics afin que Prometheus les collecte pour alimenter des tableaux de bord et de l’alerting. Kubernetes utilise ces métriques (autoscaling, alerting) et consomme les health checks pour redémarrer ou retirer du trafic un pod malade.
@Counted et @TimedQuarkus expose les métriques à :
Ces métriques peuvent être récupérées par Prometheus.
Un service en aval est lent ou tombe : comment éviter que tout le système ne tombe avec lui ?
API pour gérer latences, échecs réseau, retries, timeouts, fallback et circuit breakers.
@Retry, @Timeout, @Fallbackimport 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";
}
}@CircuitBreakerQuarkus SmallRye Fault Tolerance implémente ces annotations et expose des métriques de tolérance.
Un service doit appeler un autre service de façon typée, sans parser le JSON à la main.
Permet d’écrire des clients REST typés via une interface Java.
import org.eclipse.microprofile.rest.client.inject.RegisterRestClient;
import jakarta.ws.rs.GET;
import jakarta.ws.rs.Path;
import java.util.List;
record Item(String id, String name) {}
@RegisterRestClient(configKey = "inventory-api")
@Path("/inventory")
public interface InventoryClient {
@GET
List<Item> listItems();
}Injection :
Configuration (application.properties) :
Quarkus supporte aussi la version reactive des Rest Clients.
Comment documenter et consommer une API REST sans maintenir la documentation à la main ?
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.
Sécurité (JWT) : la sécurité basée sur les jetons JWT (MicroProfile JWT / SmallRye, annotation
@RolesAllowed, injection deJsonWebToken, configuration des permissions) est traitée dans la leçon 05 :05_java_Security_L_Introduction.qmd.
/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 JSONmvn quarkus:dev (hot reload) ; la Dev UI (http://localhost:8080/q/dev-ui) permet d’inspecter l’état de l’application./q/health et /q/metrics (via curl ou le navigateur).E. Bruno - MicroProfile pour les microservices (contexte Quarkus)