Skip to content

SCIAM-FR/test-transfo-weblfow-to-vt-springboot

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Test Technique - Migration WebFlux vers Virtual Threads

Contexte

Cette application utilise Spring WebFlux et Project Reactor pour consommer et produire des messages Kafka de manière réactive.

Objectif

Votre mission est de transformer cette application réactive en application impérative utilisant les Virtual Threads de Java 21+.

Ce qui est attendu

1. Migration du code réactif vers impératif

  • Remplacer KafkaReceiver / KafkaSender par @KafkaListener / KafkaTemplate
  • Éliminer toutes les classes de Project Reactor (Mono, Flux, etc.)
  • Transformer le code asynchrone en code synchrone/impératif
  • Supprimer la configuration réactive Kafka

2. Configuration des Virtual Threads

  • Activer les Virtual Threads dans Spring Boot 3.5
  • Configurer le TaskExecutor pour utiliser les Virtual Threads
  • S'assurer que les listeners Kafka utilisent les Virtual Threads

3. Maintenir les fonctionnalités

L'application doit toujours :

  • Consommer les messages du topic input-topic
  • Simuler un traitement (délai de 100ms)
  • Créer un message ACK avec le statut "PROCESSED"
  • Envoyer l'ACK au topic output-topic
  • Logger les opérations importantes

Contraintes

  • Utiliser Spring Boot 3.5 et Java 25
  • Ne pas changer le modèle Message
  • Conserver la même logique métier
  • Le code doit être simple et maintenable
  • Ajouter des commentaires pour expliquer la configuration des Virtual Threads

Structure du projet

starter/
├── pom.xml                          # Dépendances Maven
├── src/main/java/com/sciam/test/
│   ├── KafkaWebFluxApplication.java # Classe principale
│   ├── config/
│   │   └── KafkaConfig.java         # Configuration Kafka réactive (À MODIFIER)
│   ├── model/
│   │   └── Message.java             # Modèle de message (NE PAS MODIFIER)
│   └── service/
│       └── MessageProcessorService.java # Service réactif (À TRANSFORMER)
└── src/main/resources/
    └── application.yml              # Configuration (À ADAPTER)

Démarrage de l'environnement

1. Lancer Kafka avec Docker Compose

# Linux/Mac
./setup.sh

# Windows
setup.cmd

# Accéder à AKHQ pour voir les topics
# http://localhost:8090

2. Lancer l'application

mvn clean spring-boot:run

3. Envoyer un message de test

# Linux/Mac
./scripts/send-message.sh

# Windows
.\scripts\send-message.cmd

4. Vérifier le résultat

Vous devriez voir dans les logs :

  • Le message reçu du topic input-topic
  • Le traitement du message
  • L'ACK envoyé au topic output-topic

Vous pouvez aussi consulter AKHQ (http://localhost:8090) pour voir les messages dans les topics.

5. Nettoyage

# Linux/Mac
.cleanup.sh

# Windows
cleanup.cmd

Ressources utiles

Critères d'évaluation

  1. Correction fonctionnelle : L'application fonctionne comme attendu
  2. Qualité du code : Code propre, lisible et maintenable
  3. Configuration Virtual Threads : Bonne compréhension et mise en œuvre
  4. Gestion des erreurs : Erreurs gérées correctement
  5. Documentation : Code commenté et compréhensible

Durée estimée

1h30 - 2h00

Bon courage ! 🚀

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published