Cette page consolide la surface publique de Heisenberg : artefacts Maven, modules JPMS, table complète des annotations MP FT 4.1 avec ordre canonique de composition, et clés fault-tolerance/* reconnues par Ravel.
Artefacts Maven
groupId |
artifactId |
Rôle |
|---|---|---|
|
|
SPI publique stable. Re-exposition typée de la spec + types |
|
|
Moteurs de politiques purs Java 25 sans CDI : |
|
|
Intercepteur CDI unique ( |
|
|
Repackage modularisé de |
|
|
Benchmarks JMH (vs SmallRye Fault Tolerance). Pas pour la production. |
|
|
Exemples d’utilisation, autonomes ou intégrés. |
|
|
Runner officiel TCK MP FT 4.1 — hors reactor (Model 4.0.0). Ne pas déclarer en dépendance applicative. |
Toutes les versions à 0.1.0-SNAPSHOT au moment de la rédaction.
Modules JPMS
| Module | Contenu |
|---|---|
|
|
|
Implémentations internes : moteurs, |
|
Intégration CDI : |
io.vidocq.heisenberg.internal.* n’est jamais exporté. Toute classe applicative qui en dépend signale une régression à corriger.
Annotations MicroProfile Fault Tolerance 4.1
Table récapitulative des six annotations, dans l’ordre de wrapping de l’extérieur vers l’intérieur.
| Annotation | Niveau | Effet | Statut |
|---|---|---|---|
|
Méthode |
Exécute la méthode sur un virtual thread. Type de retour : |
✅ |
|
Méthode |
Fournit un résultat alternatif sur échec. Paramètres : |
✅ |
|
Méthode ou classe |
Disjoncteur CLOSED/OPEN/HALF_OPEN sur une fenêtre glissante. |
✅ |
|
Méthode ou classe |
Isolation par sémaphore (sync) ou file bornée (async). |
✅ |
|
Méthode ou classe |
Borne le temps d’une tentative — virtual thread + |
✅ |
|
Méthode ou classe |
Ré-essais bornés avec délai, jitter, |
✅ |
Paramètres détaillés
@Retry
| Paramètre | Défaut | Effet |
|---|---|---|
|
3 |
Nombre maximum de tentatives supplémentaires après la première. -1 = illimité (à utiliser avec |
|
0 |
Délai de base entre tentatives. |
|
|
Unité de |
|
180000 |
Durée totale maximale (toutes tentatives confondues). |
|
|
Unité de |
|
200 |
Variation aléatoire ajoutée à |
|
|
Unité de |
|
|
Exceptions qui déclenchent un retry. |
|
Aucun |
Exceptions qui abandonnent immédiatement (prioritaires sur |
@Timeout
Paramètre |
Défaut |
Effet |
|
1000 |
Durée maximale d’une tentative. |
|
|
Unité de |
Au-delà, TimeoutException est levée. Pour @Asynchronous, le virtual thread sous-jacent est interrompu (best-effort).
@CircuitBreaker
Paramètre |
Défaut |
Effet |
|
20 |
Taille de la fenêtre glissante. |
|
0.5 |
Seuil d’ouverture (proportion d’échecs). |
|
5000 |
Durée en état OPEN avant de passer en HALF_OPEN. |
|
|
Unité de |
|
1 |
Nombre de sondes consécutives OK pour refermer. |
|
|
Exceptions comptées comme échec. |
|
Aucun |
Exceptions non comptées (prioritaires sur |
@Bulkhead
Paramètre |
Défaut |
Effet |
|
10 |
Concurrence maximale (permis de sémaphore). |
|
10 |
Taille de file d’attente (mode |
@Fallback
Paramètre |
Défaut |
Effet |
|
|
Classe |
|
|
Nom de méthode privée/package locale sur la classe. |
|
|
Exceptions qui déclenchent le fallback. |
|
Aucun |
Exceptions qui sautent le fallback. |
Note : value et fallbackMethod sont mutuellement exclusifs.
Clés MicroProfile Config
Toutes les clés sont lues via ConfigProvider.getConfig(). Précédence : méthode > classe > globale > valeur par défaut de l’annotation (spec §12).
| Clé | Effet |
|---|---|
|
Valeur globale. |
|
Override classe. |
|
Override méthode — prioritaire. |
|
Booléen. |
|
Booléen. |
|
Priorité de l’intercepteur ( |
Exemples avec leurs paramètres :
# Globale
fault-tolerance/Retry/maxRetries=5
fault-tolerance/Timeout/value=2000
fault-tolerance/CircuitBreaker/failureRatio=0.6
# Par classe
fault-tolerance/io.example.CatalogClient/Retry/maxRetries=2
# Par méthode (prioritaire)
fault-tolerance/io.example.CatalogClient/fetch/Retry/maxRetries=1
fault-tolerance/io.example.CatalogClient/fetch/Retry/delay=500
fault-tolerance/io.example.CatalogClient/fetch/CircuitBreaker/delay=30000
fault-tolerance/io.example.CatalogClient/fetch/Bulkhead/value=20
Exceptions
| Exception | Cas |
|---|---|
|
|
|
Appel rejeté en état OPEN. |
|
Bulkhead saturé. |
|
Erreur générique du runtime. |
|
Annotation invalide détectée au démarrage (signature |
SPI Vidocq exposée par heisenberg-api
Interfaces publiques implémentables par un module tiers — par exemple un recorder de métriques alternatif.
| Type | Rôle |
|---|---|
|
Recorder de métriques. Implémenté par défaut par |
|
Registre d’état partagé pour |
|
Contexte d’invocation : bean, méthode, paramètres, configuration résolue. |
|
Interface scellée du résultat : |
Compatibilité
-
Java 25 (LTS), Maven 3.9.16.
-
CDI 4.1 Lite (Vauban) ou tout container CDI 4.1 Lite-compatible.
-
MicroProfile Config 3.1 (Ravel) en
provided. -
OpenTelemetry 1.39 (Humboldt) en
requires static— facultatif. -
MicroProfile Metrics 5.x (Dirac) — facultatif.
Pour aller plus loin
-
Concepts — modèle MP FT, ordre canonique.
-
Fonctionnement interne — moteurs purs, virtual threads.
-
TCK — exécution et statut.