Knock est le sous-système de santé du runtime Vidocq. Il implémente MicroProfile Health 4.0 avec zéro bibliothèque tierce — uniquement les spécifications Jakarta EE et MicroProfile. Les contrôles de santé sont découverts via CDI, exposés en Jakarta REST, sérialisés avec Jakarta JSON-P et exécutés sur des threads virtuels.

Origine du nom

Knock, ou le Triomphe de la médecine est une comédie de Jules Romains (1923). Le docteur Knock transforme un village entier en patients sous observation permanente — « tout homme bien portant est un malade qui s’ignore ». Le module Knock applique la même auscultation incessante à une application en cours d’exécution : les sondes de vivacité, de disponibilité et de démarrage maintiennent chaque composant sous diagnostic continu.

En un coup d’œil

Spécification implémentée

MicroProfile Health 4.0

Dépôt

https://codeberg.org/Vidocq/knock

Java

25

Modules JPMS

knock-api, knock-core, knock-cdi-vauban, knock-jaxrs, knock-tck

Dépendances d’exécution

Aucune au-delà de org.eclipse.microprofile.health et jakarta.json

TCK MicroProfile Health 4.0

28 / 28 PASS — voir l’état détaillé

Trois traits identitaires

  1. Zéro bibliothèque tierce — uniquement MicroProfile Health et les specs Jakarta. Pas de SmallRye Health, pas de Vert.x, pas de Jackson. Le JSON est produit via Jakarta JSON-P.

  2. Découverte native CDI — les beans @Liveness, @Readiness, @Startup sont découverts par une Build Compatible Extension de Vauban et enregistrés automatiquement, tandis que knock-core reste utilisable en Java SE pur.

  3. JPMS strict + threads virtuels — chaque module fournit un module-info.java ; les contrôles s’exécutent sur un VirtualThreadPerTaskExecutor. Pas de synchronized, pas de ThreadLocal, pas de setAccessible(true).

Points d’accès

Point d’accès Sonde Statut HTTP

GET /health

Tous les contrôles enregistrés

200 UP / 503 DOWN

GET /health/live

Contrôles @Liveness

200 UP / 503 DOWN

GET /health/ready

Contrôles @Readiness

200 UP / 503 DOWN

GET /health/started

Contrôles @Startup

200 UP / 503 DOWN

Position dans l’écosystème

Diagram